2017-01-19 15 views
17

Şu anki projemi Webpack 1'i daha önce kullanmakta olan Webpack 2'ye yükseltiyorum. İyileştirme ile ilgili birkaç öğreticiye baktım ve genel olarak anlıyorum.Webpack 2 module.rules'de 'use' ve 'loader' ne zaman kullanılır?

Çalışmaya devam ettiğim sorun, modül kurallarını (yükleyicileri) belirtirken 'kullanım' ve 'yükleyici'yi ne zaman kullanacağından emin değilim. İlk başta, 'un loader'u değiştirdiğini düşündüm. Ben sözdizimi bu tür anlama:

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

Ancak, ben bir use consdiered ne zaman o gibi görünmüyor ExtractTextPlugin kullandığınızda. scssLoaders varlık ile

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

: Bu denedim

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 
    } 
    } 
]; 

diğer sorunlar hakkında kapatma gitmeden önce sadece burada durdururuz. Birisi burada neyi özlediğimi açıklamaya yardım edebilir mi? Yardım etmek için ihtiyacınız olan diğer kodları sormaktan çekinmeyin! Şimdiden teşekkür ederim. Yükleyiciler için

+0

Merhaba, cevabımı en iyi cevap olarak değerlendirir misin? Teşekkürler –

cevap

23

, her ikisi arasındaki fark, o zaman loader kullanmak zorunda olduğu:

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

Not: 'loader' yerine' loader' kullanıldığında yine de çalışacaktır ancak şu anda eski bir seçenek olarak kabul edilmektedir https://webpack.js.org/guides/migrating/#chaining-loaders –

5

module.rules kastedilmektedir. Bir kuralı loader olarak belirtmek, use: [{loader}] için bir kısayoldur.

Eklentiler için, yapılandırmanızda plugins özelliğini kullanın. Biz yükleyiciler dizisi istediğinizde, bunu sadece bir yükleyici ise, use kullanmak zorunda olmadığını Webpack 2 migration tutorial devletler olarak

+0

Teşekkürler! Bu yardımcı olur. – TwistedSt

İlgili konular