2016-10-07 10 views
14

私はwebpackで圧縮/コンパイルするangular2プロジェクトを持っています。tslint-loader with webpack 2.1.0-beta.25

webpackでtslinkローダーを使用するので、tslintに関連する設定がwebpack.config.jsにあります。

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の合併症のプロセスを中断します。

私はまだ私はtslint構成を移動する必要がありますし、どこか別の場所に置きます

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. 

エラーを取得する十分な原因ではありませんloaders

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

preLoadersディレクティブを変更しました。ちょっとここで失われた。問題に関するあらゆる情報が非常に高く評価されます。

ありがとうございました!

答えて

53

を宣言pre/postLoadersでは大きな変化があります。

最初に「ローダー」セクションの名前を「ルール」に変更する必要があります。 pre/postLoadersもルールの下で定義されるようになりました。

私の場合、私はpreLoaderとしてtslintを使用していました。 pre/postLoaderをルールに追加するには、値がpreまたはpostenforceプロパティを追加します。 githubの上のリリースで

module: { 
    rules: [ 
     { 
      enforce: 'pre', 
      test: /\.tsx?$/, 
      loader: 'tslint', 
      exclude: /(node_modules)/, 
     }, 
     { 
      test: /\.tsx?$/, 
      loaders: ['awesome-typescript-loader'], 
      exclude: /(node_modules)/ 
     } 
    ] 
} 

さらに詳しい情報:Webpack v2.1.0-beta.23

リリース情報でWebPACKの設定ファイルにv2.1.0-beta.22からv2.1.0-beta.23に行く必要な変更を示しpull requestへのリンクもあります。そこには、LoaderOptionsPluginも必要であることがわかります。あなたがプラグインを追加したくない場合は、あなたがこのような何かを行うことができます

plugins: [ 
    new webpack.LoaderOptionsPlugin({ 
     options: { 
      tslint: { 
       emitErrors: true, 
       failOnHint: true 
      } 
     } 
    }) 
] 
+0

恐ろしいanswer.Can私は括弧なしでnode_modulesを使うのか?ありがとうございます。 – skiabox

2

OK ...私はちょうど下tslint定義を移動するために必要な:

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

とベータV2.1でのWebPACK 2に、プリローダに問題がある他の人のために

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

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