前置

本文将探究 vscode prettier 插件 和 eslint 插件在 vscode 中的配置以及这两者对应的在项目中的配置文件的关系,最后提及 vscode eslint 插件配置与 eslint-loader 的相互配合。中间还提及了 .vscode/settings.json 的作用。

本文建立在你对 vscode 、eslint、prettier、webpack 有简单了解的基础下进行。希望本文对你有帮助,以后搭建项目能够得心应手。

如有错误,一定不吝赐教。

初始化测试项目

创建文件夹 eslint-prettier-test 和 eslint-prettier-test/index.js。

vscode prettier

安装 vscode 插件 prettier

vscode 安装插件 prettier。

配置插件 prettier

通过 vscode settings.json 设置 vscode 默认格式化工具为 prettier。 以 JavaScript 为例。

"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},

我们以在 JavaScript 语句末尾添加分号为例,打开 vscode 配置文件 settings.json 配置 prettier 插件。

{
"prettier.semi": true,
}

此时在 vscode 中格式化代码会将 JavaScript 语句自动加上分号

创建 .prettierrc

然后再我们的项目根目录下创建 .prettierrc 配置文件。



在 .prettierrc 中写入配置。

{
"semi": false
}

这个配置项即不为 JavaScript 语句添加分号,与上文 settings.json 中的配置相反。眼见为实,我们再次格式化 js 文件。



由于 gif 会循环播放,简单解释一下。当我按下 vscode 格式化快捷键,分号消失了。

总结

这代表项目根目录下的 .prettierrc 配置文件会影响 vscode 的 prettier 插件,且优先级高于在 vscode settings.json 中的 prettier 插件配置。

我们知道这一点可以做什么?当你装上 vscode 的 prettier 插件后,你应该先将 vscode 的默认格式化工具设为 prettier, 并在 vscode 内部做好你期望的 prettier 插件配置。这对不使用 prettier 的项目的配置有效。当你的项目中包含 .prettierrc 配置文件时,该 .prettierrc 生效,vscode 中的 prettier 插件配置失效,互不冲突。

vscode eslint

eslint 配置同理。但是要想获得 eslint 提示,不仅需要在 vscode 中安装 eslint 插件。

你还需要在项目根目录创建一个 .eslintrc.js 文件才能使 vscode 抛出提示信息。当你删除 .eslintrc.js 文件,提示将消失例如,我们在项目根目录下的 .eslintrc.js 写入如下配置。

module.exports = {
env: {
es6: true,
},
rules: {
'no-console': 'warn',
},
};
  • 允许 es6 语法
  • 使用 console 抛出警告



vscode 根据规则在我们使用console时抛出了警告。

.vscode

你可以在任意的项目根目录创建一个 .vscode/settings.json 文件,这个 json 文件可以配置 vscode 中 settings.json 同样的配置。例如下面这样。

{
"editor.formatOnSave": true,
}

这项配置使 vscode 在保存时自动格式化代码。在 vscode 内部的配置文件 settings.json,同样可以配置这条选项。.vscode/settings.json 会覆盖 vscode 内部配置文件 settings.json 中的配置,这是合理的。

那么这么做的好处是什么呢?当一个项目需要多人协作时,可以通过配置项目根目录下的 .vscode/settings.json 达到共享配置的目的。

.vscode 中的插件配置

我们可以将 vscode 插件的配置放到 .vscode/settings.json 中与他人共享插件配置吗?当然是可以的。不要忘了 .vscode/settings.json 可以配置 vscode 内部的 settings.json,vscode 插件的配置也写在 vscode 内部的 settings.json 中。常常不必这么做。像 prettier 和 eslint 为我们提供了单独的配置文件放在项目根目录下,vscode 能够自动读取其配置并生效(前提是 vscode 安装了对应的插件),这在上文已经验证了。

我们可以打开一个大型开源项目参考他们是如何做的。例如 跨端框架 Taro



他们将 prettier 和 eslint 配置放到单独的配置文件中 (图中的 .prettierrc 和 .eslintrc.js)。打开 .vscode/setting.json 查看一下。

{
"eslint.validate": [
"javascript",
"javascriptreact",
{
"language": "typescript",
"autoFix": true
},
{
"language": "typescriptreact",
"autoFix": true
}
],
"jest.autoEnable": false,
"typescript.tsdk": "node_modules/typescript/lib"
}

不必将校验规则放到 .vscode/settings.json 中。配置中的 eslint.validate 规定 ESlint 插件需要校验的语言类型,添加上对应的语言后 VSCode 才会在代码编辑器中正确的高亮错误的语法。如果你在 vscode 中安装了 eslint 插件,默认配置中包含一些常用语言,一般无需再单独配置。

记住一点即可:.vscode/settings.json 仅作用于 vscode 内部的 settings.json。

eslint-loader

如果你使用 webpack 构建项目,应该会使用 eslint-loader。可以在 loader 中配置校验规则。这和上文所说的不是一会事,项目在本地跑起来时(通常在生产环境屏蔽 eslint-loader 的抛出信息)。当你的代码不符合校验规则时, eslint-loader 会在控制台抛出错误或者警告。

在本文开始已经建好的项目中安装 eslint-loader。如果使用 eslint-loader,还需要安装 eslint。

npm init -y && npm i webpack webpack-cli eslint eslint-loader -D

安装完毕,我们在 package.json 中看下当前项目的依赖。

"devDependencies": {
"eslint": "^7.14.0",
"eslint-loader": "^4.0.2",
"webpack": "^5.9.0",
"webpack-cli": "^4.2.0"
}

使用 eslint-loader 还需要稍作配置。在项目根目录下新建 webpack.config.js。

module.exports = {
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'eslint-loader',
options: {
// eslint options (if necessary)
},
},
],
},
};

为了能使这个简单的例子跑起来,我们还需要将项目中的 index.js 文件放到 src 中,因为 wepack 默认入口文件在src/index.js,这里为了方便不做多余的webpack配置,直接创建 src 文件夹并将 index.js 移入。

不要忘了,在上文 .eslintrc.js 已经配置了一条校验规则,它作用于 vscode eslint 插件。此时 index.js 中的内容也没有改变,依然在抛出警告。

接下来我们在控制台运行命令 webpack。webpack 将会把 src/index.js 打包到 dist/main.js。

如你所愿,eslint-loader 在控制台为我们抛出了一条警告,即我们在 .eslintrc.js 中配置的使用 console 时抛出警告。所以, .eslintrc.js 不仅作用于 vscode 中 eslint 插件,还作用与 eslint-loader

如果你仍有疑惑,接下来上文我们已经配置好的 wepack.config.js 中的 eslint-loader 注释掉。

module.exports = {
// module: {
// rules: [
// {
// test: /\.js$/,
// exclude: /node_modules/,
// loader: 'eslint-loader',
// options: {
// // eslint options (if necessary)
// },
// },
// ],
// },
};

再次运行 webpack,即使不看结果你应该知道了,打包过程 webpack 并不会给我们抛出任何错误。

总结

通过 loader 和 vscode 插件以及插件的配置,打通了整个开发环节的语法校验以及格式化。

vscode 中 eslint prettier 和 eslint -loader 配置关系的更多相关文章

  1. VSCode中C/C++库文件的配置

    VSCode中C/C++库文件的配置 之前一直在是用sublime做主要编辑器,现在主要使用VSCode,毕竟大厂制作,从目前的使用情况来看,我更喜欢使用VSCode编辑器. 有时候会用VScode来 ...

  2. vscode 中 vue项目使用eslint插件 检查代码

    前言 本文章项目由vue-cli3创建 vscode版本1.36.1 eslint1.9.0 在网上找了一大堆文章,不知是什么原因,没有一篇可以直接使用的 折腾了许久,直接按eslint插件的说明,竟 ...

  3. eslint prettier vetur eslint

    VScode (版本 1.47.3)安装 eslint prettier vetur 插件 .vue 文件使用 vetur 进行格式化 在文件 .prettierrc 里写 属于你的 pettier ...

  4. VSCode中使用vue项目ESlint验证配置

    如果在一个大型项目中会有多个人一起去开发,为了使每个人写的代码格式都保持一致,就需要借助软件去帮我们保存文件的时候,自己格式化代码 解决办法:vscode软件下载一个ESLint,在到设置里面找到se ...

  5. [原创]使用vscode+es6写nodejs服务端调试配置

    前端的小伙伴们在babel等的加持下,已经可以愉快的使用es6来写代码了. 然后对于服务端的nodejs就有点坑爹了,虽然原生支持了es6,但是只是部分支持,一些不支持的特性(比如module)使用了 ...

  6. vscode中eslint插件的配置-prettier

    用vue-cli构建vue项目,会有个eslint代码检测的安装 可vscode自带代码格式化是prettier格式(右键有格式化文件或alt+shift+f) 这时候要在vscode上装一个esli ...

  7. 在vscode中使用eslint+prettier格式化vue项目代码 (转载)

    ESlint:javascript代码检测工具,可以配置每次保存时格式化js,但每次保存只格式化一点点,你得连续按住Ctrl+S好几次,才格式化好,自行体会~~ vetur:可以格式化html.标准c ...

  8. 在VSCode中配置Eslint格式化

    在VSCode中配置Eslint 格式化时使代码保持Eslint语法规范 安装Eslint以及prettier美化插件 在VSCode配置设置项中添加如下代码 { "workbench.co ...

  9. vscode 开发项目, Prettier ESLint的配置全攻略(基础篇)

    我们在做项目尤其是多人合作开发的时候经常会因为不同的开发规范和代码风格导致出现冲突, 为了能统一代码风格和规范我们需要使用到prettier和eslint,接下来就一vscode编辑器为例详细讲解下: ...

随机推荐

  1. Linux下的django项目02

    3.创建user模型 3.1 创建用户模型user 第一步 django-admin startproject syl 第二 在syl下创建apps文件包并标记根源 cd 到apps下并进行以下步骤 ...

  2. shell脚本之编程基础介绍

    1.shell脚本简介 1.1 shell是什么? shell是一个命令解释器,它在操作系统的最外层负责直接与用户对话,把用户的输入解释给操作系统:并处理各种各样的操作系统的输入,将结果输出到屏幕返回 ...

  3. windows搭建ftp

    控制面板                此时输入电脑用户名和密码可在自己电脑访问,但是其它电脑不能访问 接下来防火墙允许的应用将FTP服务器打钩 控制面板\系统和安全\Windows Defender ...

  4. Pycharm同步远程服务器调试

    Pycharm同步远程服务器调试 1.需要准备工具 xftp:上传项目文件 xshell:连接Linux系统调试,执行命令 PyCharm:调试python代码 这些软件可以自行网上搜索下载,也可以关 ...

  5. P1526 [NOI2003]智破连环阵

    目录 题意描述 算法分析 闲话 初步分析 具体思路 剪枝一 剪枝二 剪枝三 总结一下 代码实现 预处理 剪枝一 剪枝二 剪枝三 二分图匹配 代码综合 结语 又是被楼教主虐的体无完肤的一天 题意描述 在 ...

  6. 记录云服务器安装node

    今天买了台云服务器,准备玩玩,对于之前没接触过Linux的我是一头雾水,登陆后进去就是一个黑黑的终端,一点也不友好,所以特地记录一下登陆以及安装node的过程 先记录一下登陆 登陆方式一: 那就是账号 ...

  7. Maven魔法堂:安装Oracle JDBC Driver依赖的那些坑

    前言 由于Oracle并没有向公开Maven仓库提供任何Oracle JDBC Driver的Jar包,因此我们无法像MySQL.SQLite等那么轻松直接通过Maven加载依赖. 而手动下载Orac ...

  8. CSS总结(一)

    1 css常用的一些属性 color: 文字颜色(前景色) font-size: 文字大小 font-family: 字体,比如:微软雅黑, 黑体,宋体,仿宋体,"Times New Rom ...

  9. Python基础学习之常用模块

    1. 模块 告诉解释器到哪里查找模块的位置:比如sys.path.append('C:/python') 导入模块时:其所在目录中除源代码文件外,还新建了一个名为__pycache__ 的子目录,这个 ...

  10. Python_环境搭建_jupyterNotebook的使用

    # @ Author : Collin_PXY # 虚拟环境的创建及Jupyter Notebook的基本使用 # Anaconda 和 Jupter Notebook的使用: # 首先得需要安装 A ...