eslint 使用实践
本文地址://guowenfh.github.io/2016/08/07/eslint-config-npmbace/
在上一篇博客详解 ESLint 规则,规范你的代码中,经过对于 ESLint 规则的学习,当时就决定一定要将 ESLint 使用起来,进行语法校验,来减少我们在程序中可能出现的错误。
但在当时,我们仅仅是把 eslint 的规则过了一遍,并没有把 eslint 的使用过程描述出来,而且要真正的在实际中使用,以及想要在团队中推广开来,需要有一个渐渐的过程,所以反响平平,这篇博客十一个补充,我把一些常见的错误和最佳实践集合到了一起(最最基础的)。为了方便大家使用,还将配置作为一个 npm包 来方便大家使用~顺便也学了一下怎怎么发布
发布一个 eslint 规则的 npm 包
1.确保本地已经安装node和npm
2.申请npm帐号,直接上官网注册一下就好,在输入下面的命令添加把帐号加到本地之前之前,确保你npm的源地址是官方的地址(我把源切成了淘宝结果在发布包的时候发布不了)
1 | npm adduser |
3.建立一个存放规则的文件夹,例如我使用的: eslint-config-3introspection
(npm包的名称只能小写)
按照正常的流程npm init
初始化项目,我们把规则存在在一个 eslintrc.js
的文件夹中, 因为我们现在的规则实在是太简单,而且也没考虑要真的做为一个开源的项目来维护,我们在index.js只需要写下一句话module.exports = require('./eslintrc');
,我们的package.json
除了name,之外也没做什么修改。。。
(关于package.json
的编写,以及一个最基本的npm包的模样长什么样,我这里不说了,网上很多,也比较简单)
准备工作都做好了就是发布了,很简单的一个命令:出现错误请自行网上查找把。。。
1 | npm publish |
下面简单的说一下使用:
第一步:npm 全局安装 eslint
和 eslint-config-3introspection
如果你还没全局安装eslint的话,先执行下面的命令全局安装eslint, 如果已经安装了请看下一条
1 | sudo npm install eslint -g |
在全局安装定制的 eslint 包
1 | sudo npm install eslint-config-3introspection -g |
成功效果如下:
依赖信息的错误不用去管,我们只是需要其中的配置文件而已。
(windows的用户有可能出现无法引入eslint无法引用到全局模块的问题,请将 eslint-config-3introspection
,安装在你的工作区目录,以便不同项目都可以引用到)
第二部:在项目的 根目录下 新建一个 .eslintrc
文件
在文件内部添加下面这样的字段
1 | { |
这样就将我们定制的规则导入到项目中了。
第三步:检查编辑器是否已经安装 eslint 插件
下面是sublimeText的:
打开command+shift+p
,打开命令窗口,输入 pcl
,回车
再输入 sublimeLinter
,查看是否如下,不对的话一一安装这两个插件:
若上面两步成功,重启编辑器,再打开文件,应该就能看到 eslint 规则已经生效了,如下:
这样就可以愉快的使用eslint进行语法校验拉😂😂😂
失败的情况: 打开command+shift+p
,打开命令窗口,输入 sublimeLinter
找到这一项,回车后,找到 eslint 开启选项,重启编辑器再查看是不是已经好了。
如果规则不不起效果又不知道是什么地方出了问题,参考附录1
附录
附录1:vscode
安装
.eslintrc将{"extends": "3introspection"}
,引入,重启,不起效果的话,vscode会有很明显的报错信息
还是查找路径的问题,最简单的解决办法,在项目执行一次npm i eslint-config-3introspection
,把配置按照到node_modul
其他编辑器都类似
附录2:说明
- 在项目目录中
.eslintrc
中的配置,会覆盖引入的配置,有兴趣的可以进行更详细的定制。例如加入以下字段,将项目的全局变量都列在这边。
1 | // 项目中 定义的全局变量 |
- 在你的 JavaScript 文件中,用注释指定全局变量,格式如下:
1 | /* global var1, var2 */ |
- 可以在你的文件中使用以下格式的块注释来临时禁止规则出现警告:(禁用指定规则,空格后接规则名称,多个名称时逗号隔开)
1 | /* eslint-disable */ |
- 快速查看当前模块所有错误,效果如下:
1 | eslint 模块名/文件名 |
.eslintignore
,如同.gitignore
一样忽略对于某些文件,文件夹的检查
附录3:eslinrc.js 配置
1 | module.exports = { |