2017-01-19 4 views
17

現在のプロジェクトをWebpack 1にアップグレードしています。以前はWebpack 1を使用していました。アップグレードに関するチュートリアルをいくつか調べましたが、一般的には分かります。いつWebpack 2 module.rulesで 'use'と 'loader'を使用しますか?

私は、モジュールルール(ローダー)を指定する際に、 'use'と 'loader'をいつ使用するのかよく分かりません。最初は、useloaderに置き換えたと思いました。私は、構文のこのタイプを理解する:

module: { 
    rules: [{ 
    test: /\.scss$/, 
    use: [ 
     { 
     loader: 'postcss-loader', 
     options: { 
      plugins: ... 
     } 
     }, 
     'sass-loader' 
    ] 
    }] 
} 

しかし、私はそれはuseをconsdieredだときに好きしていないようExtractTextPluginを使用する場合。私は他の問題についてはオフに行く前に、私はちょうどここに停止されます

var scssLoaders = [ 
    { 
    loader: 'css-loader', 
    options: { 
     modules: true, 
     importLoaders: '2', 
     localIdentName: '[name]__[local]__[hash:base64:5]' 
    } 
    }, 
    { 
    loader: 'postcss-loader' 
    }, 
    { 
    loader: 'sass-loader', 
    options: { 
     outputStyle: 'expanded', 
     sourceMap: true, 
     sourceMapContents: true 
    } 
    } 
]; 

scssLoadersされた状態で

 { 
     test: /\.scss$/, 
     use: [ 
      { 
      loader: ExtractTextPlugin.extract({ 
       fallbackLoader: 'style-loader', 
       loader: scssLoaders 
      }) 
      }] 
     }, 

:私はこれを試してみました。誰かが私がここで行方不明を説明するのを助けてくれる?あなたが手助けする必要がある他のコードをお気軽に!前もって感謝します。

+0

こんにちは、私の答えを最善の答えと考えてもらえますか?おかげで –

答えて

23

、両者の差はそれだけで1ローダの場合、我々はloaderを使用する必要があり、我々はローダーの配列をしたいときならば、我々はuseを使用する必要があること、である:

module: { 
    rules: [ 
     { 
     test: /\.jsx$/, 
     loader: "babel-loader", // Do not use "use" here 
     options: { 
      // ... 
     } 
     }, 
     { 
     test: /\.less$/, 
     loader: "style-loader!css-loader!less-loader" 
     use: [ 
      "style-loader", 
      "css-loader", 
      "less-loader" 
     ] 
     } 
    ] 
    } 
+3

注: 'loader'を' loader'とは違って使用することは今でも動作しますが、現在はレガシーオプションとみなされていますhttps://webpack.js.org/guides/migrating/#chaining-loaders –

5

module.rulesは、ローダーを対象としています。 loaderという規則を指定すると、use: [{loader}]のショートカットになります。

プラグインの場合は、構成内でpluginsプロパティを使用します。 Webpack 2 migration tutorial状態として

+0

ありがとう!それは役に立ちます。 – TwistedSt

関連する問題