提交 13592bab 作者: 方治民

chore: 代码格式化、stylelint 升级依赖

上级 af689478
......@@ -6,7 +6,9 @@ import type { MockMethod } from 'vite-plugin-mock'
* @param path 请求地址
* @returns 拼接 BASE_URL 后的请求地址
*/
export const URL = (path: string): string => `/basic-api${path}`
export function URL(path: string): string {
return `/basic-api${path}`
}
/**
* 通用响应工具类
......
import type { MockMethod } from 'vite-plugin-mock'
import { Response } from '../_util'
const demoList = (keyword, count = 20) => {
function demoList(keyword, count = 20) {
const result = {
list: [] as any[],
}
......
import type { MockMethod } from 'vite-plugin-mock'
import { Response } from '../_util'
const demoTreeList = (keyword) => {
function demoTreeList(keyword) {
const result = {
list: [] as Recordable[],
}
......
......@@ -4,7 +4,7 @@ import qs from 'qs'
import type { MockMethod } from 'vite-plugin-mock'
import { Request, Response } from '../_util'
const parseFormParams = (req: IncomingMessage): Promise<Recordable> => {
function parseFormParams(req: IncomingMessage): Promise<Recordable> {
return new Promise((resolve) => {
let body = ''
req.on('data', function (chunk) {
......
......@@ -102,7 +102,7 @@
"@antfu/eslint-config": "^0.38.2",
"@commitlint/cli": "^17.5.1",
"@commitlint/config-conventional": "^17.4.4",
"@iconify/json": "^2.2.42",
"@iconify/json": "^2.2.43",
"@purge-icons/generated": "^0.9.0",
"@types/codemirror": "^5.60.7",
"@types/crypto-js": "^4.1.1",
......@@ -158,12 +158,11 @@
"rollup": "^2.79.1",
"rollup-plugin-visualizer": "^5.9.0",
"sort-package-json": "^2.4.1",
"stylelint": "^14.16.1",
"stylelint-config-prettier": "^9.0.5",
"stylelint-config-recommended": "^9.0.0",
"stylelint": "^15.4.0",
"stylelint-config-recommended": "^11.0.0",
"stylelint-config-recommended-vue": "^1.4.0",
"stylelint-config-standard": "^29.0.0",
"stylelint-order": "^5.0.0",
"stylelint-config-standard": "^32.0.0",
"stylelint-order": "^6.0.3",
"terser": "^5.16.8",
"ts-node": "^10.9.1",
"typescript": "^5.0.3",
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -9,4 +9,6 @@ enum Api {
* @description: Trigger ajax error
*/
export const fireErrorApi = () => defHttp.get({ url: Api.Error })
export function fireErrorApi() {
return defHttp.get({ url: Api.Error })
}
......@@ -9,6 +9,6 @@ enum Api {
* @description: Get user menu based on id
*/
export const getMenuList = () => {
export function getMenuList() {
return defHttp.get<getMenuListResultModel>({ url: Api.GetMenuList })
}
......@@ -163,7 +163,7 @@
&__item {
&-enter {
opacity: 0% !important;
opacity: 0 !important;
}
}
}
......@@ -249,7 +249,7 @@
background-color: @primary-color;
.@{prefix-cls}-list__item-enter {
opacity: 100%;
opacity: 1;
}
}
......@@ -263,7 +263,7 @@
&-enter {
width: 30px;
opacity: 0%;
opacity: 0;
}
}
}
......
......@@ -2,7 +2,7 @@ import { ref } from 'vue'
// 每行个数
export const grid = ref(12)
// slider属性
export const useSlider = (min = 6, max = 12) => {
export function useSlider(min = 6, max = 12) {
// 每行显示个数滑动条
const getMarks = () => {
const l = {}
......
......@@ -110,7 +110,7 @@
}
&-image-mask {
opacity: 0%;
opacity: 0;
position: absolute;
width: inherit;
height: inherit;
......@@ -126,7 +126,7 @@
}
&-image-mask:hover {
opacity: 4000%;
opacity: 40;
}
&-upload-btn {
......
......@@ -88,7 +88,7 @@ export function useDrawer(): UseDrawerReturnType {
return [register, methods]
}
export const useDrawerInner = (callbackFn?: Fn): UseDrawerInnerReturnType => {
export function useDrawerInner(callbackFn?: Fn): UseDrawerInnerReturnType {
const drawerInstanceRef = ref<Nullable<DrawerInstance>>(null)
const currentInstance = getCurrentInstance()
const uidRef = ref<string>('')
......
......@@ -52,7 +52,9 @@
}
})
const getAttr = (key: string | number) => ({ key })
function getAttr(key: string | number) {
return { key }
}
</script>
<template>
......
......@@ -54,7 +54,7 @@
display: inline-block;
overflow: hidden;
vertical-align: -0.15em;
fill: currentColor;
fill: currentcolor;
}
.svg-icon-spin {
......
......@@ -3,10 +3,10 @@
* @param darkModeVal 深色模式值
* @param themeMode 主题类型——外观(默认), 内容, 代码块
*/
export const getTheme = (
export function getTheme(
darkModeVal: 'light' | 'dark' | string,
themeMode: 'default' | 'content' | 'code' = 'default',
) => {
) {
const isDark = darkModeVal === 'dark'
switch (themeMode) {
case 'default':
......
......@@ -84,7 +84,7 @@ export function useModal(): UseModalReturnType {
return [register, methods]
}
export const useModalInner = (callbackFn?: Fn): UseModalInnerReturnType => {
export function useModalInner(callbackFn?: Fn): UseModalInnerReturnType {
const modalInstanceRef = ref<Nullable<ModalMethods>>(null)
const currentInstance = getCurrentInstance()
const uidRef = ref<string>('')
......
......@@ -2,10 +2,7 @@
overflow: hidden;
.ant-modal {
top: 0 !important;
right: 0 !important;
bottom: 0 !important;
left: 0 !important;
inset: 0 !important;
width: 100% !important;
height: 100%;
......@@ -110,17 +107,20 @@
.ant-modal-confirm .ant-modal-body {
padding: 24px !important;
}
@media screen and (max-height: 600px) {
@media screen and (height <= 600px) {
.ant-modal {
top: 60px;
}
}
@media screen and (max-height: 540px) {
@media screen and (height <= 540px) {
.ant-modal {
top: 30px;
}
}
@media screen and (max-height: 480px) {
@media screen and (height <= 480px) {
.ant-modal {
top: 10px;
}
......
......@@ -414,10 +414,7 @@
<style lang="less">
.img-preview {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
inset: 0;
z-index: @preview-comp-z-index;
background: rgb(0 0 0 / 50%);
user-select: none;
......
......@@ -3,7 +3,7 @@ import type { QRCodeRenderersOptions } from 'qrcode'
import { cloneDeep } from 'lodash-es'
import type { ContentType, RenderQrCodeParams } from './typing'
export const renderQrCode = ({ canvas, content, width = 0, options: params = {} }: RenderQrCodeParams) => {
export function renderQrCode({ canvas, content, width = 0, options: params = {} }: RenderQrCodeParams) {
const options = cloneDeep(params)
// 容错率,默认对内容少的二维码采用高容错率,内容多的二维码采用低容错率
options.errorCorrectionLevel = options.errorCorrectionLevel || getErrorCorrectionLevel(content)
......
import { isString } from '/@/utils/is'
import type { LogoType, RenderQrCodeParams } from './typing'
export const drawLogo = ({ canvas, logo }: RenderQrCodeParams) => {
export function drawLogo({ canvas, logo }: RenderQrCodeParams) {
if (!logo) {
return new Promise((resolve) => {
resolve((canvas as HTMLCanvasElement).toDataURL())
......
import { renderQrCode } from './drawCanvas'
import { drawLogo } from './drawLogo'
import type { RenderQrCodeParams } from './typing'
export const toCanvas = (options: RenderQrCodeParams) => {
export function toCanvas(options: RenderQrCodeParams) {
return renderQrCode(options)
.then(() => {
return options
......
......@@ -142,7 +142,7 @@
display: none;
width: 0;
height: 0;
opacity: 0%;
opacity: 0;
}
}
}
......@@ -168,7 +168,7 @@
bottom: 2px;
z-index: 1;
border-radius: 4px;
opacity: 0%;
opacity: 0;
transition: opacity 80ms ease;
&.is-vertical {
......@@ -194,7 +194,7 @@
.scrollbar:active > .scrollbar__bar,
.scrollbar:focus > .scrollbar__bar,
.scrollbar:hover > .scrollbar__bar {
opacity: 100%;
opacity: 1;
transition: opacity 340ms ease-out;
}
</style>
......@@ -63,9 +63,11 @@ const validEvents = [
'onVisualAid',
]
const isValidKey = (key: string) => validEvents.includes(key)
function isValidKey(key: string) {
return validEvents.includes(key)
}
export const bindHandlers = (initEvent: Event, listeners: any, editor: any): void => {
export function bindHandlers(initEvent: Event, listeners: any, editor: any): void {
Object.keys(listeners)
.filter(isValidKey)
.forEach((key: string) => {
......
......@@ -17,7 +17,7 @@ function isAuth(el: Element, binding: any) {
}
}
const mounted = (el: Element, binding: DirectiveBinding<any>) => {
function mounted(el: Element, binding: DirectiveBinding<any>) {
isAuth(el, binding)
}
......
......@@ -8,7 +8,7 @@ export interface ScrollToParams {
callback?: () => any
}
const easeInOutQuad = (t: number, b: number, c: number, d: number) => {
function easeInOutQuad(t: number, b: number, c: number, d: number) {
t /= d / 2
if (t < 1) {
return (c / 2) * t * t + b
......@@ -16,11 +16,11 @@ const easeInOutQuad = (t: number, b: number, c: number, d: number) => {
t--
return (-c / 2) * (t * (t - 2) - 1) + b
}
const move = (el: HTMLElement, amount: number) => {
function move(el: HTMLElement, amount: number) {
el.scrollTop = amount
}
const position = (el: HTMLElement) => {
function position(el: HTMLElement) {
return el.scrollTop
}
export function useScrollTo({ el, to, duration = 500, callback }: ScrollToParams) {
......
......@@ -3,7 +3,7 @@ import type { GlobConfig } from '/#/config'
import { warn } from '/@/utils/log'
import { getAppEnvConfig } from '/@/utils/env'
export const useGlobSetting = (): Readonly<GlobConfig> => {
export function useGlobSetting(): Readonly<GlobConfig> {
const {
VITE_GLOB_APP_TITLE,
VITE_GLOB_API_URL,
......
......@@ -7,7 +7,7 @@ import { useRouter } from 'vue-router'
/**
* @description: Full screen display content
*/
export const useFullContent = () => {
export function useFullContent() {
const appStore = useAppStore()
const router = useRouter()
const { currentRoute } = router
......
......@@ -52,4 +52,6 @@ export function useI18n(namespace?: string): {
// 为什么要编写此函数?
// 主要用于配合vscode i18nn ally插件。此功能仅用于路由和菜单。请在其他地方使用useI18n
export const t = (key: string) => key
export function t(key: string) {
return key
}
......@@ -69,7 +69,7 @@ function createConfirm(options: ModalOptionsEx): ConfirmOptions {
return Modal.confirm(opt) as unknown as ConfirmOptions
}
const getBaseOptions = () => {
function getBaseOptions() {
const { t } = useI18n()
return {
okText: t('common.okText'),
......
......@@ -30,7 +30,7 @@ export function useGo(_router?: Router) {
/**
* @description: redo current page
*/
export const useRedo = (_router?: Router) => {
export function useRedo(_router?: Router) {
const { replace, currentRoute } = _router || useRouter()
const { query, params = {}, name, fullPath } = unref(currentRoute.value)
function redo(): Promise<boolean> {
......
......@@ -190,7 +190,7 @@
&--mobile {
.@{logo-prefix-cls} {
&__title {
opacity: 100%;
opacity: 1;
}
}
}
......
......@@ -79,7 +79,7 @@ export const topMenuAlignOptions = [
},
]
export const getMenuTriggerOptions = (hideTop: boolean) => {
export function getMenuTriggerOptions(hideTop: boolean) {
return [
{
value: TriggerEnum.NONE,
......
......@@ -522,14 +522,14 @@
font-size: 18px;
color: @primary-color;
border-bottom: 1px solid rgb(238 238 238);
opacity: 0%;
opacity: 0;
transition: unset;
align-items: center;
justify-content: space-between;
&.show {
min-width: 130px;
opacity: 100%;
opacity: 1;
transition: all 0.5s ease;
}
......
......@@ -4,17 +4,21 @@ export const PARENT_LAYOUT_NAME = 'ParentLayout'
export const PAGE_NOT_FOUND_NAME = 'PageNotFound'
export const EXCEPTION_COMPONENT = () => import('/@/views/sys/exception/Exception.vue')
export function EXCEPTION_COMPONENT() {
return import('/@/views/sys/exception/Exception.vue')
}
/**
* @description: default layout
*/
export const LAYOUT = () => import('/@/layouts/default/index.vue')
export function LAYOUT() {
return import('/@/layouts/default/index.vue')
}
/**
* @description: parent-layout
*/
export const getParentLayout = (_name?: string) => {
export function getParentLayout(_name?: string) {
return () =>
new Promise((resolve) => {
resolve({
......
......@@ -33,15 +33,15 @@ export function createParamMenuGuard(router: Router) {
})
}
const getPermissionMode = () => {
function getPermissionMode() {
const appStore = useAppStoreWithOut()
return appStore.getProjectConfig.permissionMode
}
const isBackMode = () => {
function isBackMode() {
return getPermissionMode() === PermissionModeEnum.BACK
}
const isRouteMappingMode = () => {
function isRouteMappingMode() {
return getPermissionMode() === PermissionModeEnum.ROUTE_MAPPING
}
......@@ -7,7 +7,9 @@ import { warn } from '/@/utils/log'
import { createRouter, createWebHashHistory } from 'vue-router'
export type LayoutMapKey = 'LAYOUT'
const IFRAME = () => import('/@/views/sys/iframe/FrameBlank.vue')
function IFRAME() {
return import('/@/views/sys/iframe/FrameBlank.vue')
}
const LayoutMap = new Map<string, () => Promise<typeof import('*.vue')>>()
......
......@@ -6,11 +6,12 @@ import { basicRoutes } from './routes'
// 白名单应该包含基本静态路由
const WHITE_NAME_LIST: string[] = []
const getRouteNames = (array: any[]) =>
array.forEach((item) => {
function getRouteNames(array: any[]) {
return array.forEach((item) => {
WHITE_NAME_LIST.push(item.name)
getRouteNames(item.children || [])
})
}
getRouteNames(basicRoutes)
// app router
......
......@@ -24,19 +24,19 @@ Object.keys(modules).forEach((key) => {
// ==========Helper===========
// ===========================
const getPermissionMode = () => {
function getPermissionMode() {
const appStore = useAppStoreWithOut()
return appStore.getProjectConfig.permissionMode
}
const isBackMode = () => {
function isBackMode() {
return getPermissionMode() === PermissionModeEnum.BACK
}
const isRouteMappingMode = () => {
function isRouteMappingMode() {
return getPermissionMode() === PermissionModeEnum.ROUTE_MAPPING
}
const isRoleMode = () => {
function isRoleMode() {
return getPermissionMode() === PermissionModeEnum.ROLE
}
......@@ -62,7 +62,7 @@ async function getAsyncMenus() {
return staticMenus
}
export const getMenus = async (): Promise<Menu[]> => {
export async function getMenus(): Promise<Menu[]> {
const menus = await getAsyncMenus()
if (isRoleMode()) {
const routes = router.getRoutes()
......
......@@ -26,7 +26,7 @@ function handleGotoPage(router: Router) {
go(unref(router.currentRoute).path, true)
}
const getToTarget = (tabItem: RouteLocationNormalized) => {
function getToTarget(tabItem: RouteLocationNormalized) {
const { params, path, query } = tabItem
return {
params: params || {},
......
......@@ -5,7 +5,7 @@ import { DEFAULT_CACHE_TIME, enableStorageEncryption } from '/@/settings/encrypt
export type Options = Partial<CreateStorageParams>
const createOptions = (storage: Storage, options: Options = {}): Options => {
function createOptions(storage: Storage, options: Options = {}): Options {
return {
// No encryption in debug mode
hasEncrypt: enableStorageEncryption,
......@@ -17,15 +17,15 @@ const createOptions = (storage: Storage, options: Options = {}): Options => {
export const WebStorage = create(createOptions(sessionStorage))
export const createStorage = (storage: Storage = sessionStorage, options: Options = {}) => {
export function createStorage(storage: Storage = sessionStorage, options: Options = {}) {
return create(createOptions(storage, options))
}
export const createSessionStorage = (options: Options = {}) => {
export function createSessionStorage(options: Options = {}) {
return createStorage(sessionStorage, { ...options, timeout: DEFAULT_CACHE_TIME })
}
export const createLocalStorage = (options: Options = {}) => {
export function createLocalStorage(options: Options = {}) {
return createStorage(localStorage, { ...options, timeout: DEFAULT_CACHE_TIME })
}
......
......@@ -9,14 +9,14 @@ export interface CreateStorageParams extends EncryptionParams {
hasEncrypt: boolean
timeout?: Nullable<number>
}
export const createStorage = ({
export function createStorage({
prefixKey = '',
storage = sessionStorage,
key = cacheCipher.key,
iv = cacheCipher.iv,
timeout = null,
hasEncrypt = true,
}: Partial<CreateStorageParams> = {}) => {
}: Partial<CreateStorageParams> = {}) {
if (hasEncrypt && [key.length, iv.length].some((item) => item !== 16)) {
throw new Error('When hasEncrypt is true, the key or iv must be 16 bits!')
}
......
......@@ -12,7 +12,9 @@ const DEFAULT_CONFIG: TreeHelperConfig = {
}
// 获取配置。 Object.assign 从一个或多个源对象复制到目标对象
const getConfig = (config: Partial<TreeHelperConfig>) => Object.assign({}, DEFAULT_CONFIG, config)
function getConfig(config: Partial<TreeHelperConfig>) {
return Object.assign({}, DEFAULT_CONFIG, config)
}
// tree from list
// 列表中的树
......
......@@ -5,7 +5,9 @@ import { isFunction } from '/@/utils/is'
// Used to store the identification and cancellation function of each request
let pendingMap = new Map<string, Canceler>()
export const getPendingUrl = (config: AxiosRequestConfig) => [config.method, config.url].join('&')
export function getPendingUrl(config: AxiosRequestConfig) {
return [config.method, config.url].join('&')
}
export class AxiosCanceler {
/**
......
......@@ -5,7 +5,7 @@ import { unref } from 'vue'
import { isObject } from '/@/utils/is'
import { cloneDeep } from 'lodash-es'
export const noop = () => {}
export function noop() {}
/**
* @description: Set ui mount node
......@@ -82,7 +82,7 @@ export function getRawRoute(route: RouteLocationNormalized): RouteLocationNormal
}
}
export const withInstall = <T>(component: T, alias?: string) => {
export function withInstall<T>(component: T, alias?: string) {
const comp = component as any
comp.install = (app: App) => {
app.component(comp.name || comp.displayName, component)
......
......@@ -133,7 +133,7 @@ export function buildProp<
type NativePropType = [((...args: any) => any) | { new (...args: any): any } | undefined | null]
export const buildProps = <
export function buildProps<
O extends {
[K in keyof O]: O[K] extends BuildPropReturn<any, any, any, any, any>
? O[K]
......@@ -145,10 +145,8 @@ export const buildProps = <
: never
: never
},
>(
props: O,
) =>
fromPairs(Object.entries(props).map(([key, option]) => [key, buildProp(option as any, key)])) as unknown as {
>(props: O) {
return fromPairs(Object.entries(props).map(([key, option]) => [key, buildProp(option as any, key)])) as unknown as {
[K in keyof O]: O[K] extends { [propKey]: boolean }
? O[K]
: [O[K]] extends NativePropType
......@@ -157,10 +155,17 @@ export const buildProps = <
? BuildPropReturn<T, O[K]['default'], R, V, C>
: never
}
}
export const definePropType = <T>(val: any) => ({ [wrapperKey]: val } as PropWrapper<T>)
export function definePropType<T>(val: any) {
return { [wrapperKey]: val } as PropWrapper<T>
}
export const keyOf = <T>(arr: T) => Object.keys(arr) as Array<keyof T>
export const mutable = <T extends readonly any[] | Record<string, unknown>>(val: T) => val as Mutable<typeof val>
export function keyOf<T>(arr: T) {
return Object.keys(arr) as Array<keyof T>
}
export function mutable<T extends readonly any[] | Record<string, unknown>>(val: T) {
return val as Mutable<typeof val>
}
export const componentSize = ['large', 'medium', 'small', 'mini'] as const
......@@ -15,7 +15,7 @@ const PROXY_LIST = [
* 将内部地址(内网)转换成代理/预览地址(公网)
* @param url 内网地址
*/
export const getExtranetUrl = (url: string): string => {
export function getExtranetUrl(url: string): string {
let uri = url
PROXY_LIST.forEach((proxy) => {
......@@ -30,7 +30,7 @@ export const getExtranetUrl = (url: string): string => {
* eg: 主要用于解决内网文件上传后预览,但是实际上传存储时还是内网地址的问题
* @param url 代理/公网地址
*/
export const getIntranetUrl = (url: string): string => {
export function getIntranetUrl(url: string): string {
let uri = url
PROXY_LIST.forEach((proxy) => {
......@@ -45,7 +45,7 @@ export const getIntranetUrl = (url: string): string => {
* @param body 接口返回的内容
* @returns 替换本地链接后的数据结果
*/
export const handleResponseResource = <T>(body: T, options: Recordable) => {
export function handleResponseResource<T>(body: T, options: Recordable) {
if (options.apiUrl.includes('proxy.yiring.com') && typeof body === 'object') {
let text = JSON.stringify(body)
......
......@@ -13,8 +13,12 @@
const schema: DescItem[] = []
const devSchema: DescItem[] = []
const commonTagRender = (color: string) => (curVal) => h(Tag, { color }, () => curVal)
const commonLinkRender = (text: string) => (href) => h('a', { href, target: '_blank' }, text)
function commonTagRender(color: string) {
return (curVal) => h(Tag, { color }, () => curVal)
}
function commonLinkRender(text: string) {
return (href) => h('a', { href, target: '_blank' }, text)
}
const infoSchema: DescItem[] = [
{
......
......@@ -164,6 +164,7 @@
font-size: 90px;
}
}
@media screen and (min-width: @screen-lg) {
span:not(.meridiem) {
font-size: 220px;
......@@ -175,6 +176,7 @@
font-size: 260px;
}
}
@media screen and (min-width: @screen-2xl) {
span:not(.meridiem) {
font-size: 320px;
......
......@@ -80,7 +80,7 @@
background-color: @dark-bg;
&::before {
background-image: url(/@/assets/svg/login-bg-dark.svg);
background-image: url('/@/assets/svg/login-bg-dark.svg');
}
.ant-input,
......@@ -110,6 +110,7 @@
.@{prefix-cls} {
min-height: 100%;
overflow: hidden;
@media (max-width: @screen-xl) {
background-color: #293146;
.@{prefix-cls}-form {
......@@ -124,11 +125,12 @@
width: 100%;
height: 100%;
margin-left: -48%;
background-image: url(/@/assets/svg/login-bg.svg);
background-image: url('/@/assets/svg/login-bg.svg');
background-position: 100%;
background-repeat: no-repeat;
background-size: auto 100%;
content: '';
@media (max-width: @screen-xl) {
display: none;
}
......@@ -179,15 +181,19 @@
input:not([type='checkbox']) {
min-width: 360px;
@media (max-width: @screen-xl) {
min-width: 320px;
}
@media (max-width: @screen-lg) {
min-width: 260px;
}
@media (max-width: @screen-md) {
min-width: 240px;
}
@media (max-width: @screen-sm) {
min-width: 160px;
}
......
......@@ -13,7 +13,7 @@
const appStore = useAppStore()
const userId = ref<Nullable<number | string>>(0)
const isBackMode = () => {
function isBackMode() {
return appStore.getProjectConfig.permissionMode === PermissionModeEnum.BACK
}
......
module.exports = {
root: true,
plugins: ['stylelint-order'],
extends: ['stylelint-config-standard', 'stylelint-config-prettier'],
extends: ['stylelint-config-standard'],
customSyntax: 'postcss-html',
rules: {
'function-no-unknown': null,
......@@ -38,12 +38,8 @@ module.exports = {
'no-empty-source': null,
'string-quotes': null,
'named-grid-areas-no-invalid': null,
'unicode-bom': 'never',
'no-descending-specificity': null,
'font-family-no-missing-generic-family-keyword': null,
'declaration-colon-space-after': 'always-single-line',
'declaration-colon-space-before': 'never',
// 'declaration-block-trailing-semicolon': 'always',
'rule-empty-line-before': [
'always',
{
......@@ -76,7 +72,7 @@ module.exports = {
overrides: [
{
files: ['*.vue', '**/*.vue', '*.html', '**/*.html'],
extends: ['stylelint-config-recommended', 'stylelint-config-prettier', 'stylelint-config-recommended-vue'],
extends: ['stylelint-config-recommended', 'stylelint-config-recommended-vue'],
rules: {
'keyframes-name-pattern': null,
'selector-pseudo-class-no-unknown': [
......@@ -96,7 +92,7 @@ module.exports = {
{
files: ['*.less', '**/*.less'],
customSyntax: 'postcss-less',
extends: ['stylelint-config-standard', 'stylelint-config-prettier', 'stylelint-config-recommended-vue'],
extends: ['stylelint-config-standard', 'stylelint-config-recommended-vue'],
},
],
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论