前端之路——文章转载

ESLint使用说明

2017-11-06  本文已影响354人  candice2cc

本文以使用eslint:recommended 和 eslint-config-airbnb-base 为例,介绍ESlint的使用。

入门HelloWorld

npm install -g eslint 
module.exports = {
  extends: 'eslint:recommended',
};

执行命令:

# ./app是应用规则的程序路径,--ext执行程序文件后缀名
eslint ./app --ext .js

配置文件说明

parserOptions

.eslintrc.json示例:

{
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module",
        "ecmaFeatures": {
            "jsx": true
        }
    },
    "rules": {
        "semi": 2
    }
}

parser

ESLint 默认使用Espree作为其解析器,平常项目中我一般使用babel-eslint作为parser。

{
    "parser": "babel-eslint",
}

env

环境定义了预定义的全局变量。

{
    "env": {
        "browser": true,
        "node": true
    }
}

globals

项目中特殊的全局变量

{
    "globals": {
        "var1": true,
        "var2": false
    }
}

plugins

plugin是一个npm包,通常输出规则。一些插件也可以输出一个或多个命名的配置。
ESLint 支持使用第三方插件。在使用插件之前,你必须使用 npm 安装它。插件名称可以省略 eslint-plugin- 前缀。

{
    "plugins": [
        "plugin1",
        "eslint-plugin-plugin2"
    ]
}

rules

ESLint 附带有大量的规则。你可以通过配置文件修改你项目中使用的规则。改变一个规则设置,你必须设置规则 ID 等于这些值之一:
"off" 或 0 - 关闭规则
"warn" 或 1 - 开启规则,使用警告级别的错误:warn (不会导致程序退出)
"error" 或 2 - 开启规则,使用错误级别的错误:error (当被触发的时候,程序会退出)

{
    "rules": {
        "eqeqeq": "off",
        "curly": "error",
        "quotes": ["error", "double"]
    }
}

eslint-config-airbnb-base

airbnb通过可共享配置的方式共享他们的eslint 规则。可共享配置 是一个npm包,它输出一个配置对象。
下面我们介绍如何在项目中使用。

# 首先 通过npm info命令查询依赖
$ npm info "eslint-config-airbnb-base@latest" peerDependencies
{ eslint: '^4.9.0', 'eslint-plugin-import': '^2.7.0' }

# 根据查询结果手动安装指定版本的依赖包
npm install eslint@4.9.0 --save-dev
...

# Linux用户可以直接执行,自动完成依赖包安装
export PKG=eslint-config-airbnb-base;
npm info "$PKG@latest" peerDependencies --json | command sed 's/[\{\},]//g ; s/: /@/g' | xargs npm install --save-dev "$PKG@latest"

# 安装airbnb配置
npm install eslint-config-airbnb-base@latest
/**
 *
 * eslint 配置
 */
module.exports = {
    "extends": "airbnb-base",
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module",


    },
    parser: "babel-eslint",
    "env": {
        "browser": true,
        "node": true,
        "es6": true,
        "commonjs": true
    },
    "globals": {},

    "rules": {
        "indent": ["error", 4]
    }
};

$ ./node_modules/eslint/bin/eslint.js ./client --ext .js

/Users/candice/Development/Web/www-mis/client/index.js
  6:1  error  Too many blank lines at the end of file. Max of 1 allowed  no-multiple-empty-lines

✖ 1 problem (1 error, 0 warnings)
  1 error, 0 warnings potentially fixable with the `--fix` option.
    module: {
        rules: [
            {
                test: /\.js$/,
                include: [
                    path.resolve(__dirname, '../public'),
                    path.resolve(__dirname, '../common'),
                    path.resolve(__dirname, '../app'),
                ],
                loader: ['babel-loader','eslint-loader'], //执行顺序从右往左
            },
/* eslint-disable */

alert('foo');

/* eslint-enable */
/* eslint-disable no-alert, no-console */

alert('foo');
console.log('bar');

/* eslint-enable no-alert, no-console */
/* eslint-disable */

alert('foo');
/* eslint-disable no-alert */

// Disables no-alert for the rest of the file
alert('foo');
alert('foo'); // eslint-disable-line

// eslint-disable-next-line
alert('foo');
alert('foo'); // eslint-disable-line no-alert

// eslint-disable-next-line no-alert
alert('foo');
上一篇下一篇

猜你喜欢

热点阅读