【问题标题】:How to run tslint only on modified files如何仅在修改后的文件上运行 tslint
【发布时间】:2017-08-01 15:34:07
【问题描述】:

我想将 tslint 配置为仅在 git 修改的文件上运行。 在 packages.json 我将“lint”任务定义为:

{
  "scripts": {
     "lint": "tslint \"./src/**/*.{ts,tsx}\"",
     ...
  },
  "dependencies": {
     "tslint": "4.3.1",
     ... 
  },
  ...
}

所以lint 任务工作正常,但它通过硬编码掩码处理项目中的所有文件。假设我有一个 javascript listModified.js 生成 git 修改文件列表。如何将 js 生成的字符串作为参数传递给 tslint?

我不能在这里使用管道,因为 tslint 接受参数而不是管道。我没有使用 eval 来形成论点。

怎么做?

【问题讨论】:

    标签: javascript npm tslint


    【解决方案1】:

    试试 xargs

    echo "file1.ts\nfile2.ts" | xargs tslint
    

    显然您也可以使用 git statusgit log 来生成要检查的文件列表

    如果 xargs 在您的系统中不可用,请尝试使用常规 javascript API https://www.npmjs.com/package/tslint#library-1

    【讨论】:

    • 感谢您的回答,但我的配置无法正常工作。 xargs 适用于 *nix 系统。是否有任何通用的 npm 解决方案,或者我必须为每个系统引入几个特定于平台的命令?
    • 尝试以编程方式使用 tslint 然后npmjs.com/package/tslint#library-1
    【解决方案2】:

    我建议你使用一些构建系统,因为它应该有允许通过计算哈希或检查最后修改时间来检查文件是否被修改的插件。

    例如,使用gulpgulp-tslintgulp-changed-in-place 插件,以及用于读写JSON 文件的jsonfile 包:

    var changedInPlace = require('gulp-changed-in-place'),
        gulpTsLint = require('gulp-tslint'),
        jsonfile = require('jsonfile');
    
    var tsHashFile = 'ts.hash.json';
    gulp.task('tslint', function (cb) {
        jsonfile.readFile(tsHashFile, function (err, obj) {
            var firstPass = false;
            if (err) {
                firstPass = true;
                obj = {};
            }
            return gulp.src(tsGlob)
                .pipe(changedInPlace({
                    cache: obj,
                    firstPass: firstPass
                }))
                .pipe(gulpTsLint())
                .pipe(gulpTsLint.report())
                .on('end', function (event) {
                    jsonfile.writeFile(tsHashFile, obj, function () {
                        cb(event);
                    });
                });
        });
    });
    

    tsHashFile 用于持久化计算的哈希值,当您再次运行gulp tslint 时,不会对哈希值未更改的文件执行tslint

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多