
大家好,我是wo不是黄蓉,今年学习目标从源码共读开始,希望能跟着若川大佬学习源码的思路学到更多的东西。。
我想学习代码格式化,是因为每次拉到一个新项目代码格式由于个人习惯问题已经将代码格式化规则配置为个人的格式化规则了。但是在团队里面可不允许你这么做,拉到一个新的项目,一般都会有一些基础的格式化配置,我们经常用的是
eslint
+prettier
这两个结合使用的。但是拉到一个新的项目时,由于本地的规则和项目规则有冲突就会造成自动格式化完之后代码又被还原的情况,这样就会搞得我们很混乱。
一种比较好的做法是,在项目里声明.vscode
文件,一下文件夹下新建settings.json
文件,这个文件配置和vscode
中首选项里面配置是一样的,好处是,我们可以直接按照项目的规范,不必要在本地重设一套代码格式规则。
elsint
用来检测不合法或者无用的代码,默认只处理js
,可以配合插件使用格式化其他类型的文件。
项目跟目录下新建.vscode
.vscode
下新建settings.json
,
两种不生效的情况:
第一种:如果你的vscode
中安装了Eslint
插件那么配置了该配置会生效,否则不会生效
{
"eslint.enable": true, //开启eslint检查
}
我卸载了eslint
,然后在.eslintrc.json
中配置了不允许使用console
没有提示报错

启用之后

所以使用eslint
之前必须先安装插件,如果安装了之后没有生效,需要重启下vscode
第二种:我安装了eslint
但是开发环境没有安装eslint
的包可以生效吗?答案不能

安装eslint
包,npm i eslint

安装完之后发现有效果了,但是提示的信息是什么import
是保留字的问题,import
明明是esmcscript
的语法啊
此时需要我们配置我们的解析器,告诉解析器我们要解析的源类型是什么,需要解析成什么。通常配合parser
一起使用,它用来指定具体如何解析代码的策略 ,参考
{
"parserOptions": {
"ecmaVersion": "latest",//配置使用允许使用ecma最新语法
"sourceType": "module"//配置为module则可以使用export default和module.exports语法,否则只能编写js代码,默认为script,即只能编写js代码
},
"rules": {
"no-console": "error"
}
}
配置完成后效果

通常情况,我们会结合其他插件来使用,例如eslint-vue-plugin
来规范.vue
代码,利用parse
,例如:@babel/eslint-parser
、@typescript-eslint/parser
配置解析器。
prettier
对文件内容的格式进行处理。
安装prettier
插件
项目根目录下新建.prettierrc.json
文件,配置如下
{
"semi":false,//代码后面加;
"singleQuote": true //设置使用双引号
}
保存文件会自动对文件进行格式化
下篇学习怎么写一个谷歌插件
网友评论