在webpack中使用eslint配置(详细教程)-js教程-PHP中文网

本篇文章主要介绍了webpack引入eslint配置详解,现在分享给大家,也给大家做个参考。
webpack中eslint使用

首先,要使webpack支持eslint,就要要安装 eslint-loader ,命令如下:

1

npm install --save-dev eslint-loader

在 webpack.config.js 中添加如下代码:

1

2

3

4

5

6

7

8

9

{

  test: /\.js$/,

  loader: 'eslint-loader',

  enforce: "pre",

  include: [path.resolve(__dirname, 'src')], // 指定检查的目录

  options: { // 这里的配置项参数将会被传递到 eslint 的 CLIEngine 

    formatter: require('eslint-friendly-formatter') // 指定错误报告的格式规范

  }

}

注:formatter默认是stylish,如果想用第三方的可以安装该插件,如上方的示例中的 eslint-friendly-formatter 。

其次,要想webpack具有 eslint 的能力,就要安装eslint,命令如下:

1

npm install --save-dev eslint

最后,项目想要使用那些eslin规则,可以创建一个配置项文件 '.eslintrc.js',代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

module.exports = {

  root: true,  

  parserOptions: {

    sourceType: 'module'

  },

  env: {

    browser: true,

  },

  rules: {

    "indent": ["error", 2],

    "quotes": ["error", "double"],

    "semi": ["error", "always"],

    "no-console": "error",

    "arrow-parens": 0

  }

}

这样,一个简单的webpack引入eslint已经完成了。

这里讲一下 eslintrc.js 的配置使用,详细细节请参考http://eslint.cn/docs/user-guide

eslint 配置项

root 限定配置文件的使用范围

parser 指定eslint的解析器

parserOptions 设置解析器选项

extends 指定eslint规范

plugins 引用第三方的插件

env 指定代码运行的宿主环境

rules 启用额外的规则或覆盖默认的规则

globals 声明在代码中的自定义全局变量

在我们使用eslint时,配置文件中的 rules 配置项是否是不可或缺的?

答案是肯定的。不过我们也可以不用自定义reules,我们可以使用第三方的,这里我们就要使用extends配置项。

extends

我们可以使用eslint官方推荐的,也可以使用一些大公司提供的的,如:aribnb, google, standard。

在开发中我们一般使用第三方的。

官方推荐

只需在 .eslintrc.js 中添加如下代码:

1

2

extends: 'eslint:recommended',

extends: 'eslint:all',

了解详情可以参考一下官方规则表

第三方分享

使用第三方分享的,我们一般需要安装相关的插件代码如下:

1

2

npm install --save-dev eslint-config-airbnb // bnb

npm install --save-dev eslint-config-standard // standard

在 .eslintrc.js 中添加如下代码:

1

2

3

extends: 'eslint:google',

// or

extends: 'eslint:standard',

使用这些第三方的扩展,有时我们需要更新一些插件,比如standard:eslint-plugin-import

不要慌,我们只要按照错误提示一步一步的安装这些插件即可。

虽然,这些第三方的扩展很不错,但是有时我们需要定义一些比较个性化的规则,我们就需要添加 rules 配置项。

配置规则

在.eslintrc.js 文件中添加 rules, 代码如下:

1

2

3

4

5

6

{

  "rules": {

    "semi": ["error", "always"],

    "quotes": ["error", "double"]

  }

}

"semi" 和 "quotes" 是 ESLint 中 规则 的名称。第一个值是错误级别,可以使下面的值之一:

"off" or 0 - 关闭规则

"warn" or 1 - 将规则视为一个警告(不会影响退出码)

"error" or 2 - 将规则视为一个错误 (退出码为1)

这些规则一般分为两类:

添加默认或第三库中没有的

覆盖默认或第三库的

我们的项目中可能会有一些其他的文件也需要进行格式规范,如:html, vue, react等,对于这些文件的处理,我们需要引入第三方插件。

plugins(html)

安装 eslint-plugin-html ,命令如下:

1

npm install --save-dev eslint-plugin-html

这个插件将会提醒模块脚本之间模拟浏览器共享全局变量的行为,因为这不适用于模块脚本。

这个插件也可以扩展文件,如:.vue,.jsx

.eslintrc.js中,添加如下配置项:

1

2

3

4

settings: {

  'html/html-extensions': ['.html', '.vue'],

  'html/indent': '+2',

},

而对于这种用 eslint-pulgin-html 扩展的的文件我们可以使用 eslint --ext .html,.vue src 进行检测,如果想要在开发中边写边检测,我们可以使用相应文件的loader进行处理。然后执行 npm run dev 就可以实现的功能。边写边检测的功能。

在开发中有时根据需要,我们可能在同一个项目不同的目录使用不同的 .eslintrc.js 文件,这时我们就需要使用配置项 root 。

限定使用范围 (root: true)

如果我们想要在不同的目录中使用不同的 .eslintrc, 我们就需要在该目录中添加如下的配置项:

1

2

3

{

  "root": true

}

如果我们不设置的话,它将会继续查找,知道更目录,如果更目录有配置文件它将会使用根目录的,这样会导致当前配置目录配置无法起作用的问题。

在开发中针对不同的情况我们要使用不同的解析器,而我们常用的就是 babel-eslint 。

parser(指定解析器)

babel-eslint 解析器是一种使用频率很高的解析器,因为现在很多公司的很多项目目前都使用了es6,为了兼容性考虑基本都使用babel插件对代码进行编译。而用babel编译后的代码使用 babel-eslint 这款解析器可以避免不必要的麻烦。

babel-eslint 安装命令:

1

npm install --save-dev babel-eslint

在 .eslintrc.js 配置文件中添加如下配置项代码:

1

parser: 'babel-eslint',

如果你使用的默认解析器的话,且在代码中使用了浏览器有兼容性的问题的js新特性,使用webpack编译就会出现问题,这时我们一般装最新的eslint或者安装是使用 babel-eslint 来解决问题。

env(环境)

在 .eslintrc.js 中添加如下代码:

1

2

3

4

"env": {

  "browser": true, //

  "node": true //

}

指定了环境,你就可以放心的使用它们的全局变量和属性。

global

指定全局变量。

在 .eslintrc.js 中添加如下代码:

1

2

3

4

"globals": {

  "var1": true,

  "var2": false 

}

上面是我整理给大家的,希望今后会对大家有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建一个属于自己的博客

1、安装 node.js wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz tar -xf node-v10.15.3-linux-x64.tar.xz -C /home/ 解压到/home、目录下 mv node-v10.15.3-linux-x64/ node vim /etc/profile #配置环境变量 export PATH/home/node/bin:$PATH export…

Redis是什么?

Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets. redis是开源,BSD许可,高级的key-value存储系统. 可以用来存储字符串,哈希结构…

Vue中定义全局变量与常量的各种方式详解_vue.js_脚本之家

前言 本文主要跟大家介绍了关于Vue定义全局变量与常量的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 我想要定义一个变量, 在项目的任何地方都可以访问到, 不需要每一次使用的时候, 都引入. 尝试1:…

oracle 数据库 锁

首先你要知道表锁住了是不是正常锁?因为任何DML语句都会对表加锁。 你要先查一下是那个会话那个sql锁住了表,有可能这是正常业务需求,不建议随便KILL session,如果这个锁表是正常业务你把session kill掉了会影响业务的。建议先查原…

推荐21个顶级的Vue UI库! – TalkingData‘s Blog

推荐21个顶级的Vue UI库! 最近,随着“星球大战”(指 GitHub 的 Star 数量大比拼)的爆发,Vue.js 在 GitHub 上的 Star 数超过了 React。虽然 NPM 的下载量仍然落后于 React,但 Vue.js 的受欢迎程度似乎在持续…

后缀数组水题两道

BZOJ1031:倍长,建sa,跑一边把sa值小于等于长度的后缀第n个字母输出BZOJ4278:直接把串合并起来建一个sa就可以了,然后直接分组贪心 转载于:https://www.cnblogs.com/dream-maker-yk/p/10068915.html

js获取页面的各种高度与宽度

document.body.scrollTop等属性可以获取页面滚动距离等&#xff0c;但是此类属性在xhtml标准网页或者更简单的说是带<!DOCTYPE ..>标签的页面里得到的结果是0&#xff0c; 所以一般为了兼容性都这样写 document.documentElement.scrollTop || document.body.scrollTop;以…

MAC终端下常用Git命令 - 某个人 - 博客园

送给新手的简单命令操作、远程Git和local的同步实现流程&#xff1a; 1、把git上的代码clone到本地 $ git clone http:xxxx(地址&#xff0c;可以http也可以ssh) 2、clone到本地以后、使用branch -a 查看远程所有分支 $ git branch -a 3、如若你有分支&#xff1a;master…

2019河北省大学生程序设计竞赛(重现赛)B 题 -Icebound and Sequence ( 等比数列求和的快速幂取模)...

题目链接&#xff1a;https://ac.nowcoder.com/acm/contest/903/B 题意&#xff1a; 给你 q,n,p,求 q1q2...qn 的和 模 p。 思路&#xff1a;一开始不会做&#xff0c;后面查了下发现有个等比数列求和的快速幂公式&#xff0c;附上链接https://www.cnblogs.com/yuiffy/p/380917…

centos 升级curl版本

1、安装repo rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/city-fan.org-release-2-1.rhel6.noarch.rpm 2、查看该 repo 包含的 curl 版本 yum.repos.d]# yum --showduplicates list curl --disablerepo"*" --enablerepo"city*"L…

nodejs服务后台持续运行

forever.jpeg 我用本地mac连接阿里云服务器&#xff0c;启动nodejs服务&#xff0c;客户端掉线&#xff0c;服务也会终止。如何在客户端掉线的情况下&#xff0c;node服务正常运行&#xff1f; forever介绍 forever是一个nodejs守护进程&#xff0c;完全由命令行操控。forev…

Java工具类DateFormatUtils详解

日期和时间格式化实用程序和常量public static String format(Calendar calendar, String pattern) 说明&#xff1a;将日历格式化为特定的模式&#xff1b;参数&#xff1a;calendar-格式化的日历对象&#xff0c;非null&#xff1b;pattern-用于格式化日历的模式,非null&…

Node.js+Koa开发微信公众号个人笔记(一)准备工作 - ZhangCui - 博客园

本人也是在学习过程中&#xff0c;所以文章只作为学习笔记&#xff0c;如果能帮到你&#xff0c;那就更好啦~当然也难免会有错误&#xff0c;请不吝指出~ 一、准备工作 1、本人学习教程&#xff1a;慕课网Scott老师的《Node.js七天搞定微信公众号》 &#xff0c;但是有点小贵…

bzoj4919 大根堆

考虑二分求序列LIS的过程。 g[i]表示长度为i的LIS最小以多少结尾。 对于每个数&#xff0c;二分寻找插入的位置来更新g数组。 放到树上也是一样&#xff0c;额外加上一个合并儿子的过程。 发现儿子与儿子直接是互不影响的&#xff0c;可以直接合并。 用启发式合并set来维护这个…

Oracle rowid

SYS prod>select rowid from scott.emp;ROWID ------------------ AAASPXAAEAAAACVAAA AAASPXAAEAAAACVAAB AAASPXAAEAAAACVAAC AAASPXAAEAAAACVAAD AAASPXAAEAAAACVAAE ROWID的格式如下&#xff1a; 数据对象编号 文件编号 块编号 行编号 AAASPX AAE AAAACV AAA 我们可以看…

vue项目配置eslint(附visio studio code配置)

eslint基础环境搭建 全局安装eslint&#xff1a;npm install eslint -g 项目eslint初始化&#xff1a;eslint --init&#xff0c;按团队或自己的编程风格回答三道题。 ? How would you like to configure ESLint? Use a popular style guide ? Which style guide do you w…

从数据库中取出数据表,导入并生成excel

RequestMapping("/numericalStatement1")public void createExcel(HttpServletResponse resp) throws Exception{try {String path "G:/test.xlsx";// 创建新的Excel 工作簿XSSFWorkbook workbook new XSSFWorkbook();// 在Excel工作簿中建一工作表&…

【vue-router①】router-link跳转页面传递参数 - 进击的前端之路(偶尔爬坑java小路) - SegmentFault 思否

在vue项目中&#xff0c;往往会遇到这样的情况&#xff0c;就是要实现在一个循环列表中&#xff0c;点击其中一条跳转到下个页面&#xff0c;然后将这一条的相关数据带到下个页面中显示&#xff0c;这是个循环列表&#xff0c;无论点哪一条都是跳到相同的页面&#xff0c;只是填…

RHEL7 USB installation problem and solving

版权声明&#xff1a;本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/scruffybear/article/details/37063701 Encountered quite a few problems while install the RHEL7, with the Windows system already installed. Problem 1:/dev/root does not exis…

Vue表单类的父子组件数据传递示例_vue.js_脚本之家

使用Vue.js进行项目开发&#xff0c;那必然会使用基于组件的开发方式&#xff0c;这种方式的确给开发和维护带来的一定的便利性&#xff0c;但如果涉及到组件之间的数据与状态传递交互&#xff0c;就是一件麻烦事了&#xff0c;特别是面对有一大堆表单的页面。 在这里记录一下…