ESLint配置(一):eslint默认及自定义规则介绍,上传自己的eslint-config-*风格文件

ESLint 配置


一、eslint 安装


1、全局安装
npm i -g eslint
  • 全局安装的好处是,在任何项目我们都可以使用eslint的全局命令进行代码规则操作,但是这对我们的意义并不大,后续会详细介绍;
  • 全局安装之后,要求相关的eslint插件页必须全局安装,这对多人开发项目来说会比项目安装更加繁琐。所以,我们这里采用在项目上安装eslint:
2、项目安装
npm i -D eslint
3、编辑器安装,后续文章会有介绍

二、eslint 定义规则


1、创建 .eslintrc.js 文件
  • 可以使用 ./node_modules/.bin/eslint --init 创建文件
  • .eslintrc.* 文件支持 .js .yaml .yal .json等格式的配置文件,这里使用 .js文件
  • 在 package.json 里创建一个 eslintConfig 属性,在那里,同样可以定义你的配置
  • 如果 .eslintrc.js 和 package.json里的 eslintConfig 同时存在,则只读取 .eslintrc.js文件
2、eslint 选项说明
"root": true

默认情况下,ESLint 会在所有父级目录里寻找配置文件,一直到根目录。如果发现配置文件中有 “root”: true,它就会停止在父级目录中寻找。

"parserOptions": {
	"parser": "babel-eslint", // 解析器,默认使用Espree
    "ecmaVersion": 6, // 支持es6语法,但并不意味着同时支持新的 ES6 全局变量或类型(比如 Set 等新类型)
    "sourceType": "module",	// 指定来源的类型,"script" (默认) 或 "module"(如果你的代码是 ECMAScript 模块)
    // 使用的额外的语言特性
    "ecmaFeatures": {
        "jsx": true, // 启用 JSX
        "globalReturn": true, // 允许在全局作用域下使用 return 语句
        "impliedStrict": true, // 启用全局 strict mode (如果 ecmaVersion 是 5 或更高)
        "experimentalObjectRestSpread": true,	// 启用实验性的 object rest/spread properties 支持。(重要:这是一个实验性的功能,在未来可能会有明显改变。 建议你写的规则 不要 依赖该功能,除非当它发生改变时你愿意承担维护成本。)
    }
}

解析器选项可以在 parserOptions 属性设置。设置解析器选项能帮助 ESLint 确定什么是解析错误,所有语言选项默认都是 false。如上:

"env": {
    es6: true, // 启用 ES6 语法支持以及新的 ES6 全局变量或类型
    node: true, // Node.js 全局变量和 Node.js 作用域
    browser: true, // 浏览器全局变量
    jquery: true // jQuery 全局变量
}

使用 env 关键字指定你想启用的环境。如上:
更多环境设置请参考:https://cn.eslint.org/docs/user-guide/configuring#specifying-environments

"globals": {
    template: false, // false 不允许被重写
    _util: false
}

当访问当前源文件内未定义的变量时,no-undef 规则将发出警告。如果你想在一个源文件里使用全局变量,推荐你在 ESLint 中定义这些全局变量,这样 ESLint 就不会发出警告了。如上:

"plugins": [
    "html" // 此插件用来识别.html 和 .vue文件中的js代码
]

ESLint 支持使用第三方插件。在使用插件之前,你必须使用 npm 安装它。如:npm i -D eslint-plugin-html。在配置文件里配置插件时,可以使用 plugins 关键字来存放插件名字的列表。插件名称可以省略 eslint-plugin- 前缀。如上:

"extends": "eslint:recommended"

一个配置文件可以从基础配置中继承已启用的规则。如上,如果值为字符串数组则每个配置继承它前面的配置。值为 “eslint:recommended” 的 extends 属性启用了eslint默认的规则,请参考:https://cn.eslint.org/docs/rules/

"rules": {
	'indent': [2, 4], // 强制使用一致的缩进
    'eqeqeq': [2, 'always'], // 要求使用 === 和 !==
    'semi': [2, 'never'], // 要求或禁止使用分号代替 ASI 
    'quotes': [2, 'single']  // 强制使用一致的反勾号、双引号或单引号
}

ESLint 附带有大量的规则。你可以在rules选项中设置,设置的规则将覆盖上面继承的默认规则。要改变一个规则设置,你必须将规则 ID 设置为下列值之一:

  • “off” 或 0 - 关闭规则
  • “warn” 或 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出)
  • “error” 或 2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出)

三、eslint 代码检测和修复


这里讲的是使用 eslint 命令行来操作,后续会讲到如何用编辑器提升代码效率


1、代码检测

项目根目录运行 eslint,检测指定文件,支持 glob 模式

./node_modules/.bin/eslint index.js

检测index.js文件,如下,有一个错误:多余的分号(基于semi规则)。并告诉我们此规则可以通过 --fix 命令修复。

在这里插入图片描述
指定文件后缀名

./node_modules/.bin/eslint --ext .js,.html src

目前,告诉 ESLint 哪个文件扩展名要检测的唯一方法是使用 --ext 命令行选项指定一个逗号分隔的扩展名列表。注意,该标记只在与目录一起使用时有效,如果使用文件名或 glob 模式,它将会被忽略。

2、代码修复

项目根目录运行

./node_modules/.bin/eslint index.js --fix

会自动修复代码,当然不是所有的规则都能实现自动修复的,具体说明请参照:https://cn.eslint.org/docs/rules/


四、eslint更多配置方式


完整的 配置层次结构,从最高优先级最低的优先级,如下:

1、行内配置
/*eslint-disable*//*eslint-enable*/
/*global*/
/*eslint*/
/*eslint-env*/
2、命令行选项
--global
--rule
--env
-c、--config
3、项目级配置
  • 与要检测的文件在同一目录下的 .eslintrc.\*package.json 文件
  • 继续在父级目录寻找 .eslintrcpackage.json文件,直到根目录(包括根目录)或直到发现一个有"root": true的配置。
4、如果不是(1)到(3)中的任何一种情况,退回到 ~/.eslintrc 中自定义的默认配置。

五、.eslintignore 忽略文件


1、定义及作用

在项目根目录创建一个 .eslintignore 文件告诉 ESLint 去忽略特定的文件和目录。

2、忽略规则
  • .eslintignore 文件是一个纯文本文件,其中的每一行都是一个 glob 模式表明哪些路径应该忽略检测。如:

    /dist/
    /*.js
    
  • eslint总是忽略 /node_modules/\*/bower_components/\* 中的文件

3、用eslint命令检查忽略文件
./node_modules/.bin/eslint index.js

在这里插入图片描述

六、创建自己的规则风格文件


1、命名
eslint-config-* // 如:eslint-config-vui
2、上传

参照发布一个自己的npm包

3、下载
npm i -D eslint-config-vui
4、使用

在继承规则 extends 属性中定义自己上传的规则名,可以忽略 eslint-config- 字符,如下:

extends: ['vui']
5、eslint-config-vui 规则源码地址(记得给星哦)

https://github.com/shiguang0116/eslint-config-vui


七、使用编辑器插件标识错误以及自动修复代码


为什么使用编辑器插件:上述讲到的使用 eslint 命令来检测和修复代码的操作显然非常繁琐,我们需要能够自动修复代码的工具,相关编辑器都提供了 eslint 插件。

参考ESLint配置(二):vscode配置eslint,实现错误代码标识以及自动修复


八、使用构建工具检测代码


为什么:以上方式,包括后续讲到的使用编辑器修复代码,都只是自我书写代码的规范意识而已,在多人开发时如何强制性的要求提交的代码是符合我们自定的规范呢?这就需要在构建工具做相应的配置。

参考ESLint配置(三):构建工具(webpack、gulp)配置eslint



系列文章


ESLint配置(一):eslint默认及自定义规则介绍,上传自己的eslint-config-*风格文件
ESLint配置(二):vscode配置eslint,实现错误代码标识以及自动修复
ESLint配置(三):构建工具(webpack、gulp)配置eslint

  • 23
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: vue-cli3 的 vue.config.js 文件用于配置项目的 webpack 构建环境。可以在该文件进行如下配置: - 修改 webpack 的配置项 - 配置 devServer - 配置代理 - 使用插件 示例: ``` module.exports = { devServer: { port: 8080, proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true } } }, configureWebpack: { plugins: [ new MyAwesomeWebpackPlugin() ] } } ``` 其configureWebpack 配置项可以修改 webpack 的配置项,devServer 配置项可以配置开发服务器的相关选项,proxy 配置项可以配置代理。 注意:vue.config.js 文件不是必须的,如果项目没有该文件,则使用默认配置。 ### 回答2: Vue CLI 3是Vue.js的一个脚手架工具,用于快速构建Vue项目。vue.config.js是一个配置文件,它在项目构建过程被调用,用于配置Webpack和Vue CLI的一些选项。 vue.config.js配置文件可以设置很多选项,包括开发时代理、打包时的压缩和代码分割等等。下面是一些常用的选项: 1. publicPath publicPath是一个字符串,用于指定打包后的静态资源的路径。可以是相对路径或绝对路径,它的值会被Webpack在生成代码时加入到各个静态资源引用的URL。 2. outputDir outputDir是一个字符串,用于指定打包后的输出目录。默认值是"dist"。 3. devServer devServer是一个对象,用于配置开发服务器。其包括代理、端口号和自动打开浏览器等选项。可以用它来配置前后端联调、Mock服务等。 4. chainWebpack chainWebpack是一个函数,用于修改Webpack的配置。可以在其添加、删除、修改各种Webpack配置项。举个例子,我们可以通过chainWebpack来关闭ESLint验证: ``` chainWebpack: config => { config.module .rule('eslint') .use('eslint-loader') .tap(options => { options.emitWarning = false return options }) } ``` 5. configureWebpack configureWebpack是一个对象或函数,用于向Webpack配置添加内容。其包括Entry和Output等选项。 6. optimization optimization是一个对象,用于配置打包时的优化选项,比如代码压缩等。 7. css css是一个对象,用于配置CSS的选项。其包括分离CSS、压缩CSS、CSS的sourceMap等。 8. pluginOptions pluginOptions是一个对象,用于配置Vue CLI插件的选项。其包括ESLint、Stylelint、PWA等。我们可以通过它来关闭ESLint验证: ``` pluginOptions: { eslint: { enable: false } } ``` 除了上面提到的常用选项,vue.config.js还有很多其他配置项可供选择,具体可参考Vue CLI的官方文档。总的来说,vue.config.js是一个非常强大的工具,可以大大提高开发效率和优化打包结果。 ### 回答3: Vue.js是目前非常流行的前端框架之一,它的灵活性和易用性受到了广大开发者的欢迎。其最新的版本Vue-cli3,提供了更加方便快捷的开发模式,同时其强大的配置功能也是特别值得注意的。Vue-cli3的vue.config.js文件包含着许多重要的配置选项,下面我们来逐一介绍一下。 1. publicPath publicPath选项可以指定发布路径,通过配置publicPath选项,可以将Vue应用的资源文件发布到指定的位置,这样就方便我们在多个环境部署Vue应用。例如,如果希望将Vue应用文件发布到“/my-app/”目录下,配置publicPath选项为“/my-app/”即可。 2. outputDir outputDir选项用于指定Vue应用的输出目录,通过配置outputDir选项,可以将Vue应用打包生成的文件输出到指定的目录下面。例如,如果希望将生成的文件输出到“/dist/”目录下,那么可以在vue.config.js文件配置outputDir选项为“dist”。 3. devServer devServer选项用于配置开发服务器,对于Vue应用的开发来说,它非常重要。通过配置devServer选项,可以定制开发服务器的端口、代理等信息,使我们在开发Vue应用时能够更加方便地进行调试和测试。 4. lintOnSave lintOnSave选项用于在保存代码时自动检查语法错误和格式错误,让我们在开发过程能够更加精细地把控代码质量。通过配置该选项,可以将Vue应用的代码自动规范,并保持统一的风格。 5. chainWebpack chainWebpack选项用于定制Webpack的配置,它可以让我们更加灵活地定制Vue应用的构建过程。通过配置该选项,可以添加自定义的Webpack插件,优化打包生成的文件等。 总之,Vue-cli3的vue.config.js文件不仅提供了强大的配置功能,而且能够让我们更加方便地开发和部署Vue应用。掌握这些配置选项,能够让我们更加高效地进行Vue应用的开发和维护工作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值