如何让 tslint 监视特定文件夹中的更改?

How do I get tslint to watch for changes in a specific folder?

我正在使用 webpack 2,如果我的打字稿代码存在编译问题,它会告诉我。但是,我还没有想出一种方法来 运行 tslint 通过它并让它 运行 在 webpack 在开发服务器模式下 运行ning 时检测到的每个更改。

我已经尝试让 tslint-loader 工作,但对于我项目中的每个文件,它只是告诉我:

/src/main.tsNo valid rules have been specified

我是这样使用它的:

rules: [
  {
    test: /\.ts$/,
    enforce: 'pre',
    loader: 'tslint-loader',
    options: {
      configuration: {
        configFile: true // I have also tried setting this to "tslint.json"
      }
    }
  },
  ... more loaders...

还是不开心。

有办法:

  1. 我正在使用的 tslint-loader 是否会在我每次进行更改时通知我 webpack-dev-server 模式下的 lint 错误?
  2. 只需从命令行 运行 tslint 并持续 "watch" 我项目中的文件?我正在寻找类似 tslint ./src/**/*.ts -t --force 的内容,但根据 tslint docs.
  3. ,还有一个不存在的附加 --watch 标志

我不想 use my editor(例如 VS Code),因为我团队中并不是每个人都使用它。我希望解决方案包含在 webpack 配置或 package.json 脚本中。

谢谢!

就您可以从命令行 运行 编写的脚本而言,您可以尝试使用 npm-watch:https://www.npmjs.com/package/npm-watch.

我已经用它成功地完成了您所说的事情。这是我所做的:

已将 npm-watch 安装到我的项目中:

$ npm install npm-watch --save-dev

将以下内容添加到我的 package.json 文件中:

"watch": {
    "lint": "src/main.ts"
},
"scripts": {
    "lint": "tslint src/**/*.ts -t verbose",
    "watch": "npm-watch"
},

我认为 npm-watch 是一个很好的工具,可以为没有它的工具提供监视功能,比如 tslint。

更新:

此外,如果您不想在 package.json 文件中添加 "watch" 部分,实际上我刚刚发现了一个我更喜欢的新工具,叫做 chokidar。它允许您在同一行上指定要 运行 的文件选择器和命令。

这是我的更新 package.json:

"scripts": {
    "lint:watch": "chokidar webpack.config.* src/**/*.ts buildScripts/**/*.ts -c \"npm run lint\" --initial --verbose"
},

你基本上给它一个或多个文件选择器,然后使用'-c'参数指定你想要的命令运行当这些文件中的任何一个被更改时。

所以现在您可以 运行 命令:

$ npm run lint:watch

我喜欢 运行 它设置了 --initial 标志,这样它就不会在执行命令之前等待任何文件更改。

如果您使用的是 TypeScript,那么您或许可以使用 tsc -w 来观察变化。

 "scripts": {
    "start": "tsc -w",
  }