2016-03-31 9 views
3

Bir ..global.scss dosyasını webpack derlememle bir kez içe aktarmanın bir yolunu bulmaya çalışıyorum, her .scss dosyasına içe aktarmak yerine (her bileşen için bir scss dosyası var).Webpack ile bir _global.scss dosyası nasıl yalnızca bir kez ve her bir .scss dosyasında içe aktarılmaz?

Şimdiye kadar bulduğum tek olası çözüm, bir yükleyici kullanmaktı, ancak işe yaramayacaktım. Benim webpack.config içinde

yükleyiciler şuna benzer:

loaders: [{ 
 
      test: /\.scss$/, 
 
      loader: "style-loader!raw-loader!sass-loader" 
 
       + "!baggage?"+ path.resolve(__dirname, "./src/_config/_global.scss") 
 
     }]

teşekkürler!

+0

Üzgünüz, sorunuzu tamamen yanlış anlamışım ... sadece bir şey gibi olmamanız gerekir: loader: 'style! Css! Sass' - – Maxwelll

cevap

8

Tüm scss dosyalarınızda bir @import ifadesi enjekte edecek özel bir yükleyici oluşturabilirsiniz.

var path = require('path'); 

module.exports = { 
    entry: './src/app.js', 
    output: { 
    filename: 'build/bundle.js' 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.scss$/, 
     exclude: /node_modules/, 
     loader: 'style!css!sass!' + path.resolve('loaders/inject-global-scss') 
     } 
    ] 
    } 
} 

Bu parçacık, bir yükleyici klasörü olduğunu varsayar ve bunun içinde, bir iğne-küresel-scss.js dosyası:

İşte bunun için bir webpack.config.js dosya.

İşte bu dosyanın içeriği var:

module.exports = function(source) { 
    this.cacheable(); 
    return `@import './src/_config/_global'; 
    ${source}`; 
} 

Şimdi senden src/_config klasörünün içindeki bir _global.scss dosyası var varsayıyorum. Ve dize şablon sözdizimi nedeniyle düğüm 5 + kullanıyorsunuz.

+0

Tam olarak aradığım şey bu. –

+0

* ve bunun içinde bir inject-global-scss.js dosyası * - Çalışmasını sağlamak için dosya adını index.js olarak değiştirmem gerekiyordu. – jpoppe

+0

@vintem Bunu yapmanın bir yolunu biliyor ve yine de darken() gibi yerleşik sass yöntemlerini kullanmaya devam edebiliyor musunuz? –

İlgili konular