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

ten*_*gen 7 typescript tslint webpack-2

我正在使用webpack 2,它会告诉我我的打字稿代码是否存在编译问题.但是,我还没有找到一种方法来运行tslint并让它在webpack运行在dev-server模式时检测到的每个更改都运行.

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

/src/main.tsNo指定了有效规则

我正在使用它:

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

仍然没有快乐.

有一种方法可以:

  1. 我每次进行更改时,我正在使用的tslint-loader告诉我webpack-dev-server模式中的lint错误吗?
  2. 只需从命令行运行tslint并让它不断"监视"我项目中的文件?我正在寻找类似的东西tslint ./src/**/*.ts -t --force,但--watch根据tslint文档还有一个不存在的附加标志.

我不想使用我的编辑器(例如VS Code),因为我团队中的每个人都不会使用它.我希望解决方案包含在webpack配置或package.json脚本中.

谢谢!

jal*_*r74 13

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

我用它来成功地做你正在谈论的事情.这是我做的:

安装npm-watch到我的项目:

$ npm install npm-watch --save-dev
Run Code Online (Sandbox Code Playgroud)

在我的package.json文件中添加了以下内容:

"watch": {
    "lint": "src/main.ts"
},
"scripts": {
    "lint": "tslint src/**/*.ts -t verbose",
    "watch": "npm-watch"
},
Run Code Online (Sandbox Code Playgroud)

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

更新:

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

这是我更新的package.json:

"scripts": {
    "lint:watch": "chokidar webpack.config.* src/**/*.ts buildScripts/**/*.ts -c \"npm run lint\" --initial --verbose"
},
Run Code Online (Sandbox Code Playgroud)

您基本上为它提供了一个或多个文件选择器,然后使用'-c'参数指定在更改任何文件时要运行的命令.

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

$ npm run lint:watch
Run Code Online (Sandbox Code Playgroud)

我喜欢使用--initial标志设置来运行它,因此它不会在执行命令之前等待任何文件更改.

  • `npm install chokidar chokidar-cli --save-dev` (4认同)