多个环境的级联配置?

时间:2017-01-09 18:44:26

标签: eslint

如何在略有不同的环境中使用cascading configurations(一个用于node.js,另一个用于浏览器)?两个环境之间唯一真正的区别是env变量。

理想情况下,我想要这样的事情:

my-project
├── .eslintrc.json
├── .eslintrc.node.json
├── .eslintrc.browser.json
└─┬ src
  └── .eslintrc.json

我指示ESLint使用合并:

  • .eslintrc.json
  • .eslintrc.node.json
  • src/.eslintrc.json

有什么想法吗?

我尝试了什么

  1. 我尝试声明单独的.eslintrc.node.json.eslintrc.browser.json文件。这有效,但级联配置不起作用(忽略了子目录中具有类似文件名的配置文件)。这种方法也遭受了两个文件之间的大量重复。

  2. 我尝试声明一个.eslintrc.json文件并将env configuratoin传递给eslint构造函数。拾取了磁盘上的配置,但忽略了传递给构造函数的env

  3. 注意:我正在通过gulp-eslint与eslint进行交互,但我认为如果我直接与eslint交互,我会看到相同的行为。

1 个答案:

答案 0 :(得分:1)

我明白了。 CLIEngine需要" envs"构造函数选项,所以我做了以下内容:

gulp.task("lint-for-node", function()
{
    return gulp.src(
        [
            "src/**.js"
        ]).
        pipe(eslint(
            {
                "envs": ["es6", "node", "amd"]
            }
        )).
        pipe(eslint.format()).
        pipe(eslint.failOnError());
});

gulp.task("lint-for-browser", function()
{
    return gulp.src(
        [
            "src/**.js"
        ]).
        pipe(eslint(
            {
                "envs": ["es6", "browser"]
            }
        )).
        pipe(eslint.format()).
        pipe(eslint.failOnError());
});

级联配置正确合并.eslintrc.jsonsrc/.eslintrc.json,ESLint从上面的构造函数中选择正确的环境。