diff --git a/package.json b/package.json index f6c99fe77..f905243ed 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "clean:lib": "rimraf node_modules", "lint:eslint": "eslint --cache --max-warnings 0 \"src/**/*.{vue,ts,tsx}\" --fix", "lint:prettier": "prettier --write \"src/**/*.{js,json,ts,tsx,css,less,scss,vue,html,md}\"", - "lint:style": "stylelint --cache --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", + "lint:stylelint": "stylelint \"**/*.{vue,css,less,postcss,scss}\" --fix --cache --cache-location node_modules/.cache/stylelint/", "lint:lint-staged": "lint-staged", "npm:check": "npx npm-check-updates", "reinstall": "rimraf pnpm-lock.yaml && rimraf package.lock.json && rimraf node_modules && npm run bootstrap", @@ -112,8 +112,10 @@ "stylelint": "^15.6.0", "stylelint-config-recommended": "^12.0.0", "stylelint-config-recommended-vue": "^1.4.0", + "stylelint-config-recess-order": "^4.0.0", "stylelint-config-standard": "^33.0.0", "stylelint-order": "^6.0.3", + "stylelint-prettier": "^3.0.0", "terser": "^5.17.1", "typescript": "^5.0.4", "unplugin-vue-setup-extend-plus": "^1.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a35742e54..91dd9f519 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -228,6 +228,9 @@ devDependencies: stylelint: specifier: ^15.6.0 version: 15.6.0 + stylelint-config-recess-order: + specifier: ^4.0.0 + version: 4.0.0(stylelint@15.6.0) stylelint-config-recommended: specifier: ^12.0.0 version: 12.0.0(stylelint@15.6.0) @@ -240,6 +243,9 @@ devDependencies: stylelint-order: specifier: ^6.0.3 version: 6.0.3(stylelint@15.6.0) + stylelint-prettier: + specifier: ^3.0.0 + version: 3.0.0(prettier@2.8.8)(stylelint@15.6.0) terser: specifier: ^5.17.1 version: 5.17.1 @@ -7852,6 +7858,15 @@ packages: stylelint: 15.6.0 dev: true + /stylelint-config-recess-order@4.0.0(stylelint@15.6.0): + resolution: {integrity: sha512-sOb+OofMryBR91CbzgV2FavpONqiIeAE7cfrgyUHqePblWBKsYzoUuWThI5EjPRA7KKeovm6ykr7twWYLeafPQ==} + peerDependencies: + stylelint: '>=15' + dependencies: + stylelint: 15.6.0 + stylelint-order: 6.0.3(stylelint@15.6.0) + dev: true + /stylelint-config-recommended-vue@1.4.0(postcss-html@1.5.0)(stylelint@15.6.0): resolution: {integrity: sha512-DVJqyX2KvMCn9U0+keL12r7xlsH26K4Vg8NrIZuq5MoF7g82DpMp326Om4E0Q+Il1o+bTHuUyejf2XAI0iD04Q==} engines: {node: ^12 || >=14} @@ -7893,6 +7908,18 @@ packages: stylelint: 15.6.0 dev: true + /stylelint-prettier@3.0.0(prettier@2.8.8)(stylelint@15.6.0): + resolution: {integrity: sha512-kIks1xw6np0zElokMT2kP6ar3S4MBoj6vUtPJuND1pFELMpZxVS/0uHPR4HDAVn0WAD3I5oF0IA3qBFxBpMkLg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + prettier: '>=2.0.0' + stylelint: '>=14.0.0' + dependencies: + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + stylelint: 15.6.0 + dev: true + /stylelint@15.6.0: resolution: {integrity: sha512-Cqzpc8tvJm77KaM8qUbhpJ/UYK55Ia0whQXj4b9IId9dlPICO7J8Lyo15SZWiHxKjlvy3p5FQor/3n6i8ignXg==} engines: {node: ^14.13.1 || >=16.0.0} diff --git a/src/components/Application/src/AppDarkModeToggle.vue b/src/components/Application/src/AppDarkModeToggle.vue index e50aa2ca3..b38803cef 100644 --- a/src/components/Application/src/AppDarkModeToggle.vue +++ b/src/components/Application/src/AppDarkModeToggle.vue @@ -46,6 +46,8 @@ html[data-theme='dark'] { .@{prefix-cls} { position: relative; display: flex; + align-items: center; + justify-content: space-between; width: 50px; height: 26px; padding: 0 6px; @@ -53,8 +55,6 @@ html[data-theme='dark'] { cursor: pointer; background-color: #151515; border-radius: 30px; - justify-content: space-between; - align-items: center; &-inner { position: absolute; diff --git a/src/components/Application/src/AppLogo.vue b/src/components/Application/src/AppLogo.vue index 91dd329a7..c4f7e4c33 100644 --- a/src/components/Application/src/AppLogo.vue +++ b/src/components/Application/src/AppLogo.vue @@ -70,8 +70,8 @@ function goHome() { &__title { font-size: 16px; font-weight: 700; - transition: all 0.5s; line-height: normal; + transition: all 0.5s; } } diff --git a/src/components/Application/src/search/AppSearchFooter.vue b/src/components/Application/src/search/AppSearchFooter.vue index 8174d3595..459b918fe 100644 --- a/src/components/Application/src/search/AppSearchFooter.vue +++ b/src/components/Application/src/search/AppSearchFooter.vue @@ -23,6 +23,8 @@ const { t } = useI18n() .@{prefix-cls} { position: relative; display: flex; + flex-shrink: 0; + align-items: center; height: 44px; padding: 0 16px; font-size: 12px; @@ -30,11 +32,11 @@ const { t } = useI18n() background-color: @component-background; border-top: 1px solid @border-color-base; border-radius: 0 0 16px 16px; - align-items: center; - flex-shrink: 0; &-item { display: flex; + align-items: center; + justify-content: center; width: 20px; height: 18px; padding-bottom: 2px; @@ -42,8 +44,6 @@ const { t } = useI18n() background-color: linear-gradient(-225deg, #d5dbe4, #f8f8f8); border-radius: 2px; box-shadow: inset 0 -2px 0 0 #cdcde6, inset 0 0 1px 1px #fff, 0 1px 2px 1px rgb(30 35 90 / 40%); - align-items: center; - justify-content: center; &:nth-child(2), &:nth-child(3), diff --git a/src/components/Application/src/search/AppSearchModal.vue b/src/components/Application/src/search/AppSearchModal.vue index d63ffe750..6c66dcb77 100644 --- a/src/components/Application/src/search/AppSearchModal.vue +++ b/src/components/Application/src/search/AppSearchModal.vue @@ -114,11 +114,11 @@ function handleClose() { left: 0; z-index: 800; display: flex; + justify-content: center; width: 100%; height: 100%; padding-top: 50px; background-color: rgb(0 0 0 / 25%); - justify-content: center; &--mobile { padding: 0; @@ -159,19 +159,19 @@ function handleClose() { &-content { position: relative; + flex-direction: column; width: 632px; margin: 0 auto auto; background-color: @component-background; border-radius: 16px; box-shadow: 0 25px 50px -12px rgb(0 0 0 / 25%); - flex-direction: column; } &-input__wrapper { display: flex; - padding: 14px 14px 0; - justify-content: space-between; align-items: center; + justify-content: space-between; + padding: 14px 14px 0; } &-input { @@ -194,12 +194,12 @@ function handleClose() { &-not-data { display: flex; + align-items: center; + justify-content: center; width: 100%; height: 100px; font-size: 0.9; color: rgb(150 159 175); - align-items: center; - justify-content: center; } &-list { @@ -213,6 +213,7 @@ function handleClose() { &__item { position: relative; display: flex; + align-items: center; width: 100%; height: 56px; padding-bottom: 4px; @@ -224,7 +225,6 @@ function handleClose() { background-color: @component-background; border-radius: 4px; box-shadow: 0 1px 3px 0 #d4d9e1; - align-items: center; > div:first-child, > div:last-child { diff --git a/src/components/Basic/src/BasicArrow.vue b/src/components/Basic/src/BasicArrow.vue index 2761f7813..10fbddccf 100644 --- a/src/components/Basic/src/BasicArrow.vue +++ b/src/components/Basic/src/BasicArrow.vue @@ -49,8 +49,8 @@ const getClass = computed(() => { .@{prefix-cls} { display: inline-block; cursor: pointer; - transform: rotate(0deg); transition: all 0.3s ease 0.1s; + transform: rotate(0deg); transform-origin: center center; &--active { diff --git a/src/components/Basic/src/BasicTitle.vue b/src/components/Basic/src/BasicTitle.vue index 2979d870e..50fe9ac2c 100644 --- a/src/components/Basic/src/BasicTitle.vue +++ b/src/components/Basic/src/BasicTitle.vue @@ -64,8 +64,8 @@ const getClass = computed(() => [ width: 3px; height: 16px; margin-right: 4px; - background-color: @primary-color; content: ''; + background-color: @primary-color; } &-help { diff --git a/src/components/Container/src/collapse/CollapseContainer.vue b/src/components/Container/src/collapse/CollapseContainer.vue index 50dc48eba..cf94bcd54 100644 --- a/src/components/Container/src/collapse/CollapseContainer.vue +++ b/src/components/Container/src/collapse/CollapseContainer.vue @@ -97,9 +97,9 @@ export default defineComponent({ &__header { display: flex; - height: 32px; - justify-content: space-between; align-items: center; + justify-content: space-between; + height: 32px; border-bottom: 1px solid @border-color-light; } @@ -109,10 +109,10 @@ export default defineComponent({ &__action { display: flex; - text-align: right; flex: 1; align-items: center; justify-content: flex-end; + text-align: right; } } diff --git a/src/components/ContextMenu/src/ContextMenu.vue b/src/components/ContextMenu/src/ContextMenu.vue index 5bdc6f460..97ac3a78c 100644 --- a/src/components/ContextMenu/src/ContextMenu.vue +++ b/src/components/ContextMenu/src/ContextMenu.vue @@ -172,12 +172,12 @@ export default defineComponent({ width: 156px; margin: 0; list-style: none; + user-select: none; background-color: @component-background; + background-clip: padding-box; border: 1px solid rgb(0 0 0 / 8%); border-radius: 0.25rem; box-shadow: 0 2px 2px 0 rgb(0 0 0 / 14%), 0 3px 1px -2px rgb(0 0 0 / 10%), 0 1px 5px 0 rgb(0 0 0 / 6%); - background-clip: padding-box; - user-select: none; &__item { margin: 0 !important; diff --git a/src/components/Cropper/src/CopperModal.vue b/src/components/Cropper/src/CopperModal.vue index 7859de688..f8e559ea3 100644 --- a/src/components/Cropper/src/CopperModal.vue +++ b/src/components/Cropper/src/CopperModal.vue @@ -204,8 +204,8 @@ async function handleOk() { &-toolbar { display: flex; - justify-content: space-between; align-items: center; + justify-content: space-between; margin-top: 10px; } @@ -225,11 +225,11 @@ async function handleOk() { &-group { display: flex; + align-items: center; + justify-content: space-around; padding-top: 8px; margin-top: 8px; border-top: 1px solid @border-color-base; - justify-content: space-around; - align-items: center; } } diff --git a/src/components/Cropper/src/CropperAvatar.vue b/src/components/Cropper/src/CropperAvatar.vue index 97dfd61f8..5f31b1c60 100644 --- a/src/components/Cropper/src/CropperAvatar.vue +++ b/src/components/Cropper/src/CropperAvatar.vue @@ -90,14 +90,14 @@ defineExpose({ openModal: openModal.bind(null, true), closeModal }) } &-image-mask { - opacity: 0; position: absolute; width: inherit; height: inherit; - border-radius: inherit; - border: inherit; - background: rgb(0 0 0 / 40%); cursor: pointer; + background: rgb(0 0 0 / 40%); + border: inherit; + border-radius: inherit; + opacity: 0; transition: opacity 0.4s; :deep(svg) { diff --git a/src/components/Drawer/src/BasicDrawer.vue b/src/components/Drawer/src/BasicDrawer.vue index 256f1ff81..ceb224097 100644 --- a/src/components/Drawer/src/BasicDrawer.vue +++ b/src/components/Drawer/src/BasicDrawer.vue @@ -191,11 +191,11 @@ function handleOk() { position: absolute; .ant-drawer-header { + box-sizing: border-box; width: 100%; height: @detail-header-height; padding: 0; border-top: 1px solid @border-color-base; - box-sizing: border-box; } .ant-drawer-title { diff --git a/src/components/Drawer/src/components/DrawerHeader.vue b/src/components/Drawer/src/components/DrawerHeader.vue index f61243d3b..c3e4e42d6 100644 --- a/src/components/Drawer/src/components/DrawerHeader.vue +++ b/src/components/Drawer/src/components/DrawerHeader.vue @@ -42,8 +42,8 @@ function handleClose() { @footer-height: 60px; .@{prefix-cls} { display: flex; - height: 100%; align-items: center; + height: 100%; &__back { padding: 0 12px; diff --git a/src/components/Form/src/BasicForm.vue b/src/components/Form/src/BasicForm.vue index cf13db953..adbbe40f6 100644 --- a/src/components/Form/src/BasicForm.vue +++ b/src/components/Form/src/BasicForm.vue @@ -299,10 +299,10 @@ const getFormActionBindProps = computed((): Recordable => ({ ...getProps.value, .suffix { display: inline-flex; + align-items: center; padding-left: 6px; margin-top: 1px; line-height: 1; - align-items: center; } } } diff --git a/src/components/FormDesign/src/components/VFormDesign/components/FormOptions.vue b/src/components/FormDesign/src/components/VFormDesign/components/FormOptions.vue index d514fdfd9..fbbc39618 100644 --- a/src/components/FormDesign/src/components/VFormDesign/components/FormOptions.vue +++ b/src/components/FormDesign/src/components/VFormDesign/components/FormOptions.vue @@ -94,14 +94,14 @@ export default defineComponent({ } .options-delete { + flex-shrink: 0; width: 30px; height: 30px; - flex-shrink: 0; line-height: 30px; - text-align: center; - border-radius: 50%; - background: #f5f5f5; color: #666; + text-align: center; + background: #f5f5f5; + border-radius: 50%; &:hover { background: #ff4d4f; diff --git a/src/components/FormDesign/src/components/VFormDesign/components/RuleProps.vue b/src/components/FormDesign/src/components/VFormDesign/components/RuleProps.vue index 64dccc0f0..f7d8bf6a9 100644 --- a/src/components/FormDesign/src/components/VFormDesign/components/RuleProps.vue +++ b/src/components/FormDesign/src/components/VFormDesign/components/RuleProps.vue @@ -237,9 +237,9 @@ export default defineComponent({ :deep(.icon) { width: 1em; height: 1em; + overflow: hidden; vertical-align: -0.15em; fill: currentcolor; - overflow: hidden; } .rule-props-content { @@ -249,10 +249,10 @@ export default defineComponent({ .rule-props-item { position: relative; - background-color: #f0eded; padding: 3px 2px; - border-radius: 5px; margin-bottom: 5px; + background-color: #f0eded; + border-radius: 5px; :deep(.ant-form-item) { border: 0 !important; @@ -262,11 +262,11 @@ export default defineComponent({ position: absolute; top: -5px; right: -5px; + z-index: 999; color: #ccc; cursor: pointer; - border-radius: 7px; background-color: #a3a0a0; - z-index: 999; + border-radius: 7px; &:hover { color: #00c; diff --git a/src/components/FormDesign/src/components/VFormDesign/modules/CollapseItem.vue b/src/components/FormDesign/src/components/VFormDesign/modules/CollapseItem.vue index a785ff270..85bcf1196 100644 --- a/src/components/FormDesign/src/components/VFormDesign/modules/CollapseItem.vue +++ b/src/components/FormDesign/src/components/VFormDesign/modules/CollapseItem.vue @@ -68,28 +68,28 @@ export default defineComponent({ @import url('../styles/variable.less'); ul { - padding: 5px; - list-style: none; display: flex; - margin-bottom: 0; flex-wrap: wrap; + padding: 5px; + margin-bottom: 0; + list-style: none; // background: #efefef; li { - padding: 8px 12px; - transition: all 0.3s; width: calc(50% - 6px); - margin: 2.7px; height: 36px; + padding: 8px 12px; + margin: 2.7px; line-height: 20px; cursor: move; border: 1px solid @border-color; border-radius: 3px; + transition: all 0.3s; &:hover { + position: relative; color: @primary-color; border: 1px solid @primary-color; - position: relative; // z-index: 1; box-shadow: 0 2px 6px @primary-color; } diff --git a/src/components/FormDesign/src/components/VFormDesign/modules/FormComponentPanel.vue b/src/components/FormDesign/src/components/VFormDesign/modules/FormComponentPanel.vue index 0ab94b387..893e6bbf1 100644 --- a/src/components/FormDesign/src/components/VFormDesign/modules/FormComponentPanel.vue +++ b/src/components/FormDesign/src/components/VFormDesign/modules/FormComponentPanel.vue @@ -94,8 +94,8 @@ export default defineComponent({ .list-main { display: flex; flex-wrap: wrap; - justify-content: flex-start; align-content: flex-start; + justify-content: flex-start; .layout-width { width: 100%; @@ -113,24 +113,24 @@ export default defineComponent({ height: 100%; .empty-text { - color: #aaa; - height: 150px; - inset: -10% 0 0; - margin: auto; position: absolute; + inset: -10% 0 0; z-index: 100; + height: 150px; + margin: auto; + color: #aaa; } .draggable-box { // width: 100%; .drag-move { - cursor: move; min-height: 62px; + cursor: move; } .list-main { - overflow: auto; height: 100%; + overflow: auto; // 列表动画 .list-enter-active { transition: all 0.5s; diff --git a/src/components/FormDesign/src/components/VFormDesign/modules/PropsPanel.vue b/src/components/FormDesign/src/components/VFormDesign/modules/PropsPanel.vue index 7e2b8fb1b..699766a42 100644 --- a/src/components/FormDesign/src/components/VFormDesign/modules/PropsPanel.vue +++ b/src/components/FormDesign/src/components/VFormDesign/modules/PropsPanel.vue @@ -60,12 +60,12 @@ export default defineComponent({ box-sizing: border-box; form { - width: 100%; position: absolute; + width: 100%; height: calc(100% - 50px); margin-right: 10px; - overflow-y: auto; overflow-x: hidden; + overflow-y: auto; } .hint-box { @@ -74,9 +74,9 @@ export default defineComponent({ .ant-form-item, .ant-slider-with-marks { - margin-left: 10px; margin-right: 20px; margin-bottom: 0; + margin-left: 10px; } .ant-form-item { diff --git a/src/components/FormDesign/src/components/VFormDesign/modules/Toolbar.vue b/src/components/FormDesign/src/components/VFormDesign/modules/Toolbar.vue index b48704b66..45cd10bfe 100644 --- a/src/components/FormDesign/src/components/VFormDesign/modules/Toolbar.vue +++ b/src/components/FormDesign/src/components/VFormDesign/modules/Toolbar.vue @@ -99,24 +99,23 @@ export default defineComponent({ diff --git a/src/components/Table/src/components/editable/EditableCell.vue b/src/components/Table/src/components/editable/EditableCell.vue index 1b369f471..bf66423b5 100644 --- a/src/components/Table/src/components/editable/EditableCell.vue +++ b/src/components/Table/src/components/editable/EditableCell.vue @@ -498,11 +498,11 @@ export default defineComponent({ .ellipsis-cell { .cell-content { - overflow-wrap: break-word; - word-break: break-word; overflow: hidden; - white-space: nowrap; text-overflow: ellipsis; + word-break: break-word; + overflow-wrap: break-word; + white-space: nowrap; } } diff --git a/src/components/Upload/src/UploadModal.vue b/src/components/Upload/src/UploadModal.vue index f225a97c3..1d86b1be7 100644 --- a/src/components/Upload/src/UploadModal.vue +++ b/src/components/Upload/src/UploadModal.vue @@ -268,9 +268,9 @@ async function handleCloseFunc() { margin-bottom: 8px; &__btn { + flex: 1; margin-left: 8px; text-align: right; - flex: 1; } } } diff --git a/src/components/Verifition/src/Verify.vue b/src/components/Verifition/src/Verify.vue index 576a7b8de..ca4c8e4fe 100644 --- a/src/components/Verifition/src/Verify.vue +++ b/src/components/Verifition/src/Verify.vue @@ -145,30 +145,30 @@ export default { diff --git a/src/views/base/lock/LockPage.vue b/src/views/base/lock/LockPage.vue index 9a2f4d041..e90923e72 100644 --- a/src/views/base/lock/LockPage.vue +++ b/src/views/base/lock/LockPage.vue @@ -127,12 +127,12 @@ function handleShowForm(show = false) { &__hour, &__minute { display: flex; + align-items: center; + justify-content: center; font-weight: 700; color: #bababa; background-color: #141313; border-radius: 30px; - justify-content: center; - align-items: center; @media screen and (max-width: @screen-md) { span:not(.meridiem) { @@ -176,12 +176,12 @@ function handleShowForm(show = false) { top: 0; left: 0; display: flex; + align-items: center; + justify-content: center; width: 100%; height: 100%; background-color: rgb(0 0 0 / 50%); backdrop-filter: blur(8px); - justify-content: center; - align-items: center; &-content { width: 260px; diff --git a/src/views/base/login/Login.vue b/src/views/base/login/Login.vue index 8f9bc6fa0..c9ab497bb 100644 --- a/src/views/base/login/Login.vue +++ b/src/views/base/login/Login.vue @@ -125,11 +125,11 @@ html[data-theme='dark'] { width: 100%; height: 100%; margin-left: -48%; - background-image: url('@/assets/svg/login-bg.svg'); - background-position: 100%; - background-repeat: no-repeat; - background-size: auto 100%; content: ''; + background-image: url('@/assets/svg/login-bg.svg'); + background-repeat: no-repeat; + background-position: 100%; + background-size: auto 100%; @media (max-width: @screen-xl) { display: none; diff --git a/stylelint.config.js b/stylelint.config.js index 9a254fea7..a58161187 100644 --- a/stylelint.config.js +++ b/stylelint.config.js @@ -1,15 +1,29 @@ module.exports = { root: true, - plugins: ['stylelint-order'], - extends: ['stylelint-config-standard'], - customSyntax: 'postcss-html', + plugins: ['stylelint-order', 'stylelint-prettier'], + extends: ['stylelint-config-standard', 'stylelint-config-recess-order'], + overrides: [ + { + files: ['**/*.(css|html|vue)'], + customSyntax: 'postcss-html' + }, + { + files: ['*.less', '**/*.less'], + customSyntax: 'postcss-less', + extends: ['stylelint-config-standard', 'stylelint-config-recommended-vue'] + } + ], rules: { + 'prettier/prettier': true, + 'at-rule-no-unknown': null, + 'selector-not-notation': null, + 'import-notation': null, 'function-no-unknown': null, 'selector-class-pattern': null, 'selector-pseudo-class-no-unknown': [ true, { - ignorePseudoClasses: ['global'] + ignorePseudoClasses: ['global', 'deep'] } ], 'selector-pseudo-element-no-unknown': [ @@ -24,19 +38,19 @@ module.exports = { ignoreAtRules: ['tailwind', 'apply', 'variants', 'responsive', 'screen', 'function', 'if', 'each', 'include', 'mixin'] } ], + 'media-feature-range-notation': null, 'no-empty-source': null, + 'string-quotes': null, 'import-notation': null, 'named-grid-areas-no-invalid': null, 'no-descending-specificity': null, 'font-family-no-missing-generic-family-keyword': null, - // 'declaration-block-trailing-semicolon': 'always', 'rule-empty-line-before': [ 'always', { ignore: ['after-comment', 'first-nested'] } ], - 'unit-no-unknown': [true, { ignoreUnits: ['rpx'] }], 'order/order': [ [ 'dollar-variables', @@ -51,36 +65,14 @@ module.exports = { type: 'at-rule', name: 'media' }, + { + type: 'at-rule', + name: 'include' + }, 'rules' ], - { severity: 'warning' } + { severity: 'error' } ] }, - ignoreFiles: ['**/*.js', '**/*.jsx', '**/*.tsx', '**/*.ts'], - overrides: [ - { - files: ['*.vue', '**/*.vue', '*.html', '**/*.html'], - extends: ['stylelint-config-recommended'], - rules: { - 'keyframes-name-pattern': null, - 'selector-pseudo-class-no-unknown': [ - true, - { - ignorePseudoClasses: ['deep', 'global'] - } - ], - 'selector-pseudo-element-no-unknown': [ - true, - { - ignorePseudoElements: ['v-deep', 'v-global', 'v-slotted'] - } - ] - } - }, - { - files: ['*.less', '**/*.less'], - customSyntax: 'postcss-less', - extends: ['stylelint-config-standard', 'stylelint-config-recommended-vue'] - } - ] + ignoreFiles: ['**/*.js', '**/*.jsx', '**/*.tsx', '**/*.ts'] }