2016-10-07 13 views
14

Webpack ile sıkıştırdığım/derlediğim bir angular2 projem var.Web paketi olan tslint-loader 2.1.0-beta.25

Web paketi ile tslink yükleyici kullanıyorum, bu nedenle webpack.config.js'da tslint ile ilgili yapılandırmaya sahibim.

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" 
     } 
    ], 
} 
} 

Ben webpack 1.13.1 2.1.0-beta.25 güncellendi ve tslint yapılandırma npm run build komplikasyon sürecini kırar.

Yeterince neden hala

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. 

yüzden tslint yapılandırmasını hareket etmeliyiz ve başka bir yere yerleştirin hatayı almak değil loaders

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

için preLoaders direktifini değiştirdi. Burada kayboldum. Bu nedenle konuyla ilgili her türlü bilgi büyük ölçüde takdir edilecektir.

Teşekkürler!

cevap

53

ilan -beta.23 öncesi/sonrası Yükleyiciler ile kırılma değişiklikleri var.

İlk önce "yükleyiciler" bölümü "kurallar" olarak yeniden adlandırılmalıdır. Ayrıca ön/postLoaders artık kurallar altında tanımlandı.

Benim durumumda bir preLoader olarak tslint kullanıyordum. Kurallara bir öncesi/sonrasıLoader eklemek için enforce özelliğini pre veya post değerini ekleyin. github sürümdeki

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

diğer bilgiler: Webpack v2.1.0-beta.23

bırakma bilgi ayrıca webpack yapılandırma dosyasında v2.1.0-beta.23 için v2.1.0-beta.22 giden gerekli değişiklikleri gösteren bir pull request bir bağlantı vardır. Orada da LoaderOptionsPlugin'e ihtiyacınız olduğunu görebilirsiniz. Eğer bir eklenti eklemek istemiyorsanız, böyle bir şey yapabilirsiniz

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

Müthiş answer.Can ben parantez olmadan node_modules kullanılır? teşekkür ederiz. – skiabox

2

Tamam .. ben hemen altında tslint tanımını taşımak için gerekli:

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

ve beta v2.1 olarak WebPack 2. preloaders ile ilgili sorunlar Diğerleri için

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

,

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