使用webpack 2.1.0-beta.25的tslint-loader

时间:2016-10-07 14:33:51

标签: typescript webpack tslint webpack-2

我有一个angular2项目,我用webpack压缩/编译。

我使用tspack loader和webpack,所以我在webpack.config.js中有与tslint相关的配置。

module.exports = {
...
tslint: {
    configuration: {
        rules: {
            quotemark: [true, "double"]
        }
    },

    // tslint errors are displayed by default as warnings
    // set emitErrors to true to display them as errors
    emitErrors: false,

    // tslint does not interrupt the compilation by default
    // if you want any file with tslint errors to fail
    // set failOnHint to true
    failOnHint: true,

    // name of your formatter (optional)
    formatter: "",

    // path to directory containing formatter (optional)
    formattersDirectory: "node_modules/tslint-loader/formatters/",

    // These options are useful if you want to save output to files
    // for your continuous integration server
    fileOutput: {
        // The directory where each file"s report is saved
        dir: "./webpack-log/",

        // The extension to use for each report"s filename. Defaults to "txt"
        ext: "xml",

        // If true, all files are removed from the report directory at the beginning of run
        clean: true,

        // A string to include at the top of every report file.
        // Useful for some report formats.
        header: "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<checkstyle version=\"5.7\">",

        // A string to include at the bottom of every report file.
        // Useful for some report formats.
        footer: "</checkstyle>"
    }
},
...
preLoaders: [
        {
            test: /\.ts$/,
            loader: "tslint"
        }
    ],
}
}

我将webpack 1.13.1更新为2.1.0-beta.25并且tslint配置打破了npm run build的复杂过程。

我将preLoaders指令更改为loaders

module: {
        ....
        {
            test: /\.ts$/,
            loader: 'tslint',
            exclude: /(node_modules)/,
            enforce: 'pre'
        },
    ],
}

这还不够,因为我仍然会收到错误

For loader options: webpack 2 no longer allows custom properties in configuration.
 Loaders should be updated to allow passing options via loader options in module.rules.

所以我应该移动tslint配置并将其放在其他地方。有点迷失在这里。因此,非常感谢有关该问题的任何信息。

谢谢!

3 个答案:

答案 0 :(得分:57)

对于在webpack 2中遇到预加载器问题的其他人。在beta v2.1-beta.23中,对pre / postLoaders进行了重大更改。

首先,“加载器”部分应重命名为“规则”。此外,pre / postLoaders现在也在规则下定义。

在我的情况下,我使用tslint作为preLoader。要向规则添加pre / postLoader,请添加值enforcepre的{​​{1}}属性。

post

github上的更多信息:Webpack v2.1.0-beta.23

在发布信息中,还有一个指向pull request的链接,该链接显示了在webpack配置文件中从module: { rules: [ { enforce: 'pre', test: /\.tsx?$/, loader: 'tslint', exclude: /(node_modules)/, }, { test: /\.tsx?$/, loaders: ['awesome-typescript-loader'], exclude: /(node_modules)/ } ] } v2.1.0-beta.22所需的更改。在那里你可以看到你还需要LoaderOptionsPlugin。

v2.1.0-beta.23

答案 1 :(得分:2)

好的..所以我只需要将tslint定义移到:

下面
plugins: [
    new LoaderOptionsPlugin({
        options: {
           tslint: {
             ...

并宣布

const LoaderOptionsPlugin = require("webpack/lib/LoaderOptionsPlugin");

答案 2 :(得分:1)

如果您不想添加插件,可以执行以下操作,

module: {
  rules: [
    {
      enforce: 'pre',
      test: /\.ts$/,
      loader: 'tslint-loader?' + JSON.stringify({
        emitErrors: true,
        failOnHint: true
      })
    }
  ]
}