2016-03-02 34 views
3

我試圖注入NODE_ENV成SASS文件,所以我可以用於開發/生產ENV不同的輸出,並具有在其內部具有這樣條件的青菜功能: @if (NODE_ENV == 'prod') {}是否有可能使用Webpack&sass loader將NODE_ENV參數注入sass文件?

我webpack.config看起來像這樣:

module: { 
    loaders: [{ 
     test: /\.scss$/, 
     loader: "style-loader!raw-loader!sass-loader?includePaths[]=" + path.resolve(__dirname, "./node_modules/compass-mixins/lib") 
    }] 
} 

我試着將數據參數傳遞給加載程序,但沒有任何,我嘗試工作。 將不勝感激任何幫助!

回答

0

看看sass-loader源代碼,它似乎不支持任何允許插入變量的選項 - 所以這樣做是不可能的。

我不認爲你能夠像這樣'插入'一個env/build-time變量到你的Sass中,但是你可以通過創建多個Sass文件並且需要你想要的從你的js源代碼)基於一個條件。請注意,webpack解析代碼中的邏輯的能力有限,但是 - 如果您想在條件內使用require,則必須檢查布爾值才能使其工作。所以,如果你做if (NODE_ENV === 'production') {...} else {...} webpack將處理所有這些條件的所有要求。如果你做了一些像if (IS_PROD_ENV) {...} else {...}這樣的條件值是一個布爾值,webpack將遵循條件邏輯並且只處理正確的requireUglifyJS插件將爲您刪除不需要的條件分支。

2

這是直接從sass-loader回購的代碼。

webpack.config.js

... sassLoader: { data: "$env: " + process.env.NODE_ENV + ";" } ...

+0

我測試,這個作品! – TetraDev

相關問題