Open PaulChess opened 3 years ago
团队内规范test:
推荐配置如下(可根据自己团队内的需要进行修改):
{
"css.validate": false,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.fixAll.stylelint": true
},
"eslint.nodePath": "path/vscode-lint/node_modules",
"eslint.options": {
"configFile": "path/vscode-lint/eslintrc.js"
},
"less.validate": false,
"scss.validate": false,
"stylelint.configBasedir": "path/vscode-lint",
"stylelint.configOverrides": {
"extends": "stylelint-config-standard",
"plugins": [
"stylelint-order"
],
"rules": {
"at-rule-empty-line-before": "never",
"at-rule-no-unknown": [
true,
{
"ignoreAtRules": [
"content",
"each",
"error",
"extend",
"for",
"function",
"if",
"include",
"mixin",
"return",
"while"
]
}
],
"color-hex-case": "lower",
"comment-empty-line-before": "never",
"declaration-colon-newline-after": null,
"declaration-empty-line-before": "never",
"function-linear-gradient-no-nonstandard-direction": null,
"indentation": "tab",
"no-descending-specificity": null,
"no-missing-end-of-source-newline": null,
"no-empty-source": null,
"number-leading-zero": "never",
"rule-empty-line-before": "never",
"order/order": [
"custom-properties",
"declarations"
],
"order/properties-order": [
// 布局属性
"display",
"visibility",
"overflow",
"overflow-x",
"overflow-y",
"overscroll-behavior",
"scroll-behavior",
"scroll-snap-type",
"scroll-snap-align",
// 布局属性:浮动
"float",
"clear",
// 布局属性:定位
"position",
"left",
"right",
"top",
"bottom",
"z-index",
// 布局属性:列表
"list-style",
"list-style-type",
"list-style-position",
"list-style-image",
// 布局属性:表格
"table-layout",
"border-collapse",
"border-spacing",
"caption-side",
"empty-cells",
// 布局属性:弹性
"flex-flow",
"flex-direction",
"flex-wrap",
"justify-content",
"align-content",
"align-items",
"align-self",
"flex",
"flex-grow",
"flex-shrink",
"flex-basis",
"order",
// 布局属性:多列
"columns",
"column-width",
"column-count",
"column-gap",
"column-rule",
"column-rule-width",
"column-rule-style",
"column-rule-color",
"column-span",
"column-fill",
"column-break-before",
"column-break-after",
"column-break-inside",
// 布局属性:格栅
"grid-columns",
"grid-rows",
// 尺寸属性
"box-sizing",
"margin",
"margin-left",
"margin-right",
"margin-top",
"margin-bottom",
"padding",
"padding-left",
"padding-right",
"padding-top",
"padding-bottom",
"border",
"border-width",
"border-style",
"border-color",
"border-colors",
"border-left",
"border-left-width",
"border-left-style",
"border-left-color",
"border-left-colors",
"border-right",
"border-right-width",
"border-right-style",
"border-right-color",
"border-right-colors",
"border-top",
"border-top-width",
"border-top-style",
"border-top-color",
"border-top-colors",
"border-bottom",
"border-bottom-width",
"border-bottom-style",
"border-bottom-color",
"border-bottom-colors",
"border-radius",
"border-top-left-radius",
"border-top-right-radius",
"border-bottom-left-radius",
"border-bottom-right-radius",
"border-image",
"border-image-source",
"border-image-slice",
"border-image-width",
"border-image-outset",
"border-image-repeat",
"width",
"min-width",
"max-width",
"height",
"min-height",
"max-height",
// 界面属性
"appearance",
"outline",
"outline-width",
"outline-style",
"outline-color",
"outline-offset",
"outline-radius",
"outline-radius-topleft",
"outline-radius-topright",
"outline-radius-bottomleft",
"outline-radius-bottomright",
"background",
"background-color",
"background-image",
"background-repeat",
"background-repeat-x",
"background-repeat-y",
"background-position",
"background-position-x",
"background-position-y",
"background-size",
"background-origin",
"background-clip",
"background-attachment",
"bakground-composite",
"mask",
"mask-mode",
"mask-image",
"mask-repeat",
"mask-repeat-x",
"mask-repeat-y",
"mask-position",
"mask-position-x",
"mask-position-y",
"mask-size",
"mask-origin",
"mask-clip",
"mask-attachment",
"mask-composite",
"mask-box-image",
"mask-box-image-source",
"mask-box-image-width",
"mask-box-image-outset",
"mask-box-image-repeat",
"mask-box-image-slice",
"box-shadow",
"box-reflect",
"filter",
"mix-blend-mode",
"opacity",
"object-fit",
"clip",
"clip-path",
"resize",
"zoom",
"cursor",
"pointer-events",
"user-modify",
"user-focus",
"user-input",
"user-select",
"user-drag",
// 文字属性
"line-height",
"line-clamp",
"vertical-align",
"direction",
"unicode-bidi",
"writing-mode",
"ime-mode",
"text-overflow",
"text-decoration",
"text-decoration-line",
"text-decoration-style",
"text-decoration-color",
"text-decoration-skip",
"text-underline-position",
"text-align",
"text-align-last",
"text-justify",
"text-indent",
"text-stroke",
"text-stroke-width",
"text-stroke-color",
"text-shadow",
"text-transform",
"text-size-adjust",
"src",
"font",
"font-family",
"font-style",
"font-stretch",
"font-weight",
"font-variant",
"font-size",
"font-size-adjust",
"color",
// 内容属性
"tab-size",
"overflow-wrap",
"word-wrap",
"word-break",
"word-spacing",
"letter-spacing",
"white-space",
"caret-color",
"quotes",
"content",
"content-visibility",
"counter-reset",
"counter-increment",
"page",
"page-break-before",
"page-break-after",
"page-break-inside",
// 交互属性
"will-change",
"perspective",
"perspective-origin",
"backface-visibility",
"transform",
"transform-origin",
"transform-style",
"transition",
"transition-property",
"transition-duration",
"transition-timing-function",
"transition-delay",
"animation",
"animation-name",
"animation-duration",
"animation-timing-function",
"animation-delay",
"animation-iteration-count",
"animation-direction",
"animation-play-state",
"animation-fill-mode",
// Webkit专有属性
"-webkit-overflow-scrolling",
"-webkit-box-orient",
"-webkit-line-clamp",
"-webkit-text-fill-color",
"-webkit-tap-highlight-color",
"-webkit-touch-callout",
"-webkit-font-smoothing",
"-moz-osx-font-smoothing"
]
}
}
}
[ ] eslint-plugin-vue
的官方文档地址: https://eslint.vuejs.org/user-guide/#installation, 目前还没有中文版,有时间研读一下。
参考文章:
一键格式化代码带来的快感|你还在为每个项目配置Stylelint和Eslint吗 公众号: IQ前端
四大前端代码校验工具:
Stylelint
、Eslint
、Tslint
、Prettier
。 通过预设规则校验代码,检测其是否存在错误/漏洞,并对错误/漏洞提示修复方案并尽可能依据修复方案格式化出正确代码。1.什么是lint ? Lint其实就是编辑器里运行的一个脚本进程,将代码解析成
AST
,遍历AST
并通过预设规则做一些判断和修改。可通过阅读babel源码
或eslint源码
了解AST的工作原理。2.引入lint的优势
可维护性
和可接入性
,让新组员能快速适应项目的架构与需求无用代码
、重复代码
、错误代码
和漏洞代码
的产生几率3.背景 不想为每个项目配置Lint,力图做到
一次配置全局运行
,使用此方案可以将所有项目的Stylelint
、Eslint
、Tslint
和Prettier
相关依赖和配置文件全部移除,使项目目录变得超级简洁。 工具: Vscode 安装:Stylelint
和Eslint
的Vscode插件和Npm依赖4.了解stylelint和eslint的相关依赖(看一下即可)
安装完成后需配置多份对应配置文件: css:
css/scss/less/vue
js:js/ts/jsx/tsx/vue
查看插件文档,发现Stylelint只能在
settings.json
上配置,而Eslint可配置成多份对应配置文件,并在settings.json
上通过特定字段指定Eslint配置文件路径。本文作者joway young开源了自己常用的配置文件集合,详见vscode-lint,目录如下:![image](https://user-images.githubusercontent.com/69644161/109287548-aecf1d00-785e-11eb-9adb-b8d03fd2f398.png)
5.配置流程 1.在Vscode中安装两个插件
Stylelint
和Eslint
2.在settings.json中插入如下如下配置,遇到其他项目需覆盖配置时在工作区选项下插入eslint.options.configFile
指定Eslint配置文件路径 3.重启Vscode