首页 > 编程知识 正文

vue eslint(babel js eslint)

时间:2023-05-05 01:24:46 阅读:93564 作者:3090

//*

* *参考文档

* 【eslint英语文档】https://eslint.org/docs /用户指南/配置

* 【eslint中文文档】http://eslint.cn/docs/rules/

*/

//*

* eslint有三种使用方法

* 【1】在js代码中用于注释

* 【2】根据webpack的eslintConfig字段设定,eslint自动搜索项目的package.json文件内的配置

* 【3】以轮廓方式使用。 配置文件有多种文件类型,如JavaScript、JSON和YAML

*/

//*

* *忽略文件

* 【1】将特定文件的检测跳过到eslint

* 【2】在当前工作目录下的“. eslintignore”文件中进行设定

使用的是Glob路径标记,使用方法与“. gitignore”相同

* 【3】也可以在package.json文件中用eslintIgnore参数进行设定

*/

//*

* *文件中的本地设置

* 【1】eslint可以在具体的文件中设定特定的代码规则,经常用于跳过某个语句的检测。

* 【2】取消注册所有规则,在代码前创建新行,添加取消注册/* eslint-disable */。 如果没有要恢复设置的语句,以下所有代码将跳过检测。

* 【3】恢复eslint,在代码之前创建新的一行,然后使用/* eslint-enable */

* 【4】无视的规则、/* eslint-disable no-alert、no-console */

* 【5】在特定行禁用的//eslint-disable-line

* 【6】在下一行禁用的//eslint-disable-next-line

*/

module .导出={

//*

* *根id

* * http://eslint.cn/docs /用户指南/配置#使用配置文件

* * http://eslint.cn/docs /用户指南/配置#配置-层叠-层次结构

* 【1】表示当前的配置文件是最下位的文件,无需在上位的文件目录中检索

* 【2【默认的eslint配置文件检索方式为:从目标文件夹中检索,浏览内部各文件夹,找到配置文件,重叠使用。 退出这个项目,遍历到祖先文件夹

* 【3】请注意“~/.eslintrc”的含义。 “~”是linux上的主目录,“~/.eslintrc”是主目录下的eslint配置文件,供私人开发人员使用,用于计算机整体的全局限制。 此配置在此配置项目的root中设置,root设置完毕,eslint检测时将不再进行进一步的搜索

* 【4】eslint的生效规则在附近使用,越接近的配置项目优先顺序越高,涵盖其他配置项目。 在一个项目中,可以向不同的文件夹添加配置文件。 这些规则将通过重复的组合生效

*/

root: true,//标识当前配置文件为eslint的根配置文件,并停止在父目录中进行搜索。

//*

* *解析器

* * http://eslint.cn/docs /用户指南/配置#指定分区

* 【1】ESLint默认使用Espree作为其解析器

* 【2】解析器必须是本地安装的npm模块。 也就是说,在本地节点模块中

【3】解析器是用于解析js代码的,如何理解各式呢? c中有一点编译器的概念,对js进行一些语法分析。 进行语义分析等,可以判断文符不符合规格。 不是简单的字符串比较。

【4】解析器有很多,eslint兼容的解析器有以下几种

* Espree :缺省解析器、从Esprima中分离的解析器以及一些优化

* Esprima:js标准解析器

*Babel-Eslint:Babel解析器的包,Babel本身也是js解析器的一种。 (否则,怎样才能转换为兼容性代码呢? 要进行转换,必须首先进行js分析)。 如果需要对代码进行babel转换,则必须使用此解析器

* * *将* TypeScript-eslint-parser (实验) typescript转换为ESTree

兼容格式的解析器

* 【5】但是通常在vue项目中,并不会写在 parser 字段中,而是写在 parserOptions -> parser。具体原因在 parserOptions 一栏中介绍

*/

// parser: 'babel-eslint',

/**

* 解析器配置项

* http://eslint.cn/docs/user-guide/configuring#specifying-parser-options

* 【1】这里设置的配置项将会传递到解析器中,被解析器获取到,进行一定的处理。具体被利用到,要看解析器的源码有没有对其进行利用。这里仅仅做了参数定义,做了规定,告诉解析器的开发者可能有这些参数

* 【2】配置项目有:

* "sourceType": "module", // 指定JS代码来源的类型,script(script标签引入?) | module(es6的module模块),默认为script。为什么vue的会使用script呢?因为vue是通过babel-loader编译的,而babel编译后的代码就是script方式

* "ecmaVersion": 6, // 支持的ES语法版本,默认为5。注意只是语法,不包括ES的全局变量。全局变量需要在env选项中进行定义

* "ecmaFeatures": { // Features是特征的意思,这里用于指定要使用其他那些语言对象

"experimentalObjectRestSpread": true, //启用对对象的扩展

"jsx": true, //启用jsx语法

"globalReturn":true, //允许return在全局使用

"impliedStrict":true //启用严格校验模式

}

*/

parserOptions: {

/**

* 这里出现 parser 的原因

* 【1】首先明确一点,官方说明中,parserOptions的配置参数是不包括 parser 的

* 【2】这里的写 parser 是 eslint-plugin-vue 的要求,是 eslint-plugin-vue 的自定义参数

* 【3】根据官方文档,eslint-plugin-vue 插件依赖 「vue-eslint-parser」解析器。「vue-eslint-parser」解析器,只解析 .vue 中html部分的内容,不会检测<script>中的JS内容。

* 【4】由于解析器只有一个,用了「vue-eslint-parser」就不能用「babel-eslint」。所以「vue-eslint-parser」的做法是,在解析器选项中,再传入一个解析器选项parser。从而在内部处理「babel-eslint」,检测<script>中的js代码

* 【5】所以这里出现了 parser

* 【6】相关文档地址,https://vuejs.github.io/eslint-plugin-vue/user-guide/#usage

*/

parser: 'babel-eslint',

},

/**

* 运行环境

* http://eslint.cn/docs/user-guide/configuring#specifying-environments

* 【1】一个环境定义了一组预定义的全局变量

* 【2】获得了特定环境的全局定义,就不会认为是开发定义的,跳过对其的定义检测。否则会被认为改变量未定义

* 【3】常见的运行环境有以下这些,更多的可查看官网

* browser - 浏览器环境中的全局变量。

* node - Node.js 全局变量和 Node.js 作用域。

* es6 - 启用除了 modules 以外的所有 ECMAScript 6 特性(该选项会自动设置 ecmaVersion 解析器选项为 6)。

* amd - 将 require() 和 define() 定义为像 amd 一样的全局变量。

* commonjs - CommonJS 全局变量和 CommonJS 作用域 (用于 Browserify/WebPack 打包的只在浏览器中运行的代码)。

* jquery - jQuery 全局变量。

* mongo - MongoDB 全局变量。

* worker - Web Workers 全局变量。

* serviceworker - Service Worker 全局变量。

*/

env: {

browser: true, // 浏览器环境

},

/**

* 全局变量

* http://eslint.cn/docs/user-guide/configuring#specifying-globals

* 【1】定义额外的全局,开发者自定义的全局变量,让其跳过no-undef 规则

* 【2】key值就是额外添加的全局变量

* 【3】value值用于标识该变量能否被重写,类似于const的作用。true为允许变量被重写

* 【4】注意:要启用no-global-assign规则来禁止对只读的全局变量进行修改。

*/

globals: {

// gTool: true, // 例如定义gTool这个全局变量,且这个变量可以被重写

},

/**

* 插件

* http://eslint.cn/docs/user-guide/configuring#configuring-plugins

* 【1】插件同样需要在node_module中下载

* 【2】注意插件名忽略了「eslint-plugin-」前缀,所以在package.json中,对应的项目名是「eslint-plugin-vue」

* 【3】插件的作用类似于解析器,用以扩展解析器的功能,用于检测非常规的js代码。也可能会新增一些特定的规则。

* 【4】如 eslint-plugin-vue,是为了帮助我们检测.vue文件中 <template> 和 <script> 中的js代码

*/

plugins: ['vue'],

/**

* 规则继承

* http://eslint.cn/docs/user-guide/configuring#extending-configuration-files

*【1】可继承的方式有以下几种

*【2】eslint内置推荐规则,就只有一个,即「eslint:recommended」

*【3】可共享的配置, 是一个 npm 包,它输出一个配置对象。即通过npm安装到node_module中

* 可共享的配置可以省略包名的前缀 eslint-config-,即实际设置安装的包名是 eslint-config-airbnb-base

*【4】从插件中获取的规则,书写规则为 「plugin:插件包名/配置名」,其中插件报名也是可以忽略「eslint-plugin-」前缀。如'plugin:vue/essential'

*【5】从配置文件中继承,即继承另外的一个配置文件,如'./node_modules/coding-standard/eslintDefaults.js'

*/

extends: [

/**

* vue 的额外添加的规则是 v-if, v-else 等指令检测

*/

'plugin:vue/essential', // 额外添加的规则可查看 https://vuejs.github.io/eslint-plugin-vue/rules/

/**

* 「airbnb,爱彼迎」

* 【1】有两种eslint规范,一种是自带了react插件的「eslint-config-airbnb」,一种是基础款「eslint-config-airbnb-base」,

* 【2】airbnb-base 包括了ES6的语法检测,需要依赖 「eslint-plugin-import」

* 【3】所以在使用airbnb-base时,需要用npm额外下载 eslint-plugin-import

* 【4】所以eslint实际上已经因为 airbnb-base 基础配置项目,添加上了 eslint-plugin-import 插件配置

* 【5】所以在setting和rules里,都有 'import/xxx' 项目,这里修改的就是 eslint-plugin-import 配置

*/

// 'airbnb-base',

],

/**

* 规则共享参数

* http://eslint.cn/docs/user-guide/configuring#adding-shared-settings

* 【1】提供给具体规则项,每个参数值,每个规则项都会被注入该变量,但对应规则而言,有没有用,就看各个规则的设置了,就好比 parserOptions,解析器用不用它就不知道了。这里只是提供这个方法

* 【2】不用怀疑,经源码验证,这就是传递给每个规则项的,会当做参数传递过去,但用不用,就是具体规则的事情

*/

settings: {

/**

*

* 注意,「import/resolver」并不是eslint规则项,与rules中的「import/extensions」不同。它不是规则项

* 这里只是一个参数名,叫「import/resolver」,会传递给每个规则项。

* settings并没有具体的书写规则,「import/」只是import模块自己起的名字,原则上,它直接命名为「resolver」也可以,加上「import」只是为了更好地区分。不是强制设置的。

* 因为「import」插件很多规则项都用的这个配置项,所以并没有通过rules设置,而是通过settings共享

* 具体使用方法可参考https://github.com/benmosher/eslint-plugin-import

*/

'import/resolver': {

/**

* 这里传入webpack并不是import插件能识别webpack,而且通过npm安装了「eslint-import-resolver-webpack」,

* 「import」插件通过「eslint-import-resolver-」+「webpack」找到该插件并使用,就能解析webpack配置项。使用里面的参数。

* 主要是使用以下这些参数,共享给import规则,让其正确识别import路径

* extensions: ['.js', '.vue', '.json'],

* alias: {

* 'vue

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。