的WebPack業餘這裏變量...我試圖將一個theme.scss
文件來定製所用的主題,通過以下方向作出反應的工具箱內指定here,即:使用的WebPack前面加上了SCSS
如果您正在使用Webpack作爲模塊打包器,您可能也使用sass-loader。我們想要做的是,預先準備每個SASS文件彙編一組變量來覆蓋,這可以與數據選項來完成。例如:
sassLoader:{data:'@import''+ path.resolve(__ dirname,'theme/_theme.scss')+'「;' }
在這種情況下,我們都在前面加上主題導入到各SASS編譯,所以原色將在每一個樣式表來改變。
我在實施這一指令與我目前的WebPack配置,它看起來像這樣的麻煩:
const webpack = require('webpack');
const path = require('path');
let ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
context: path.join(__dirname, 'client'),
entry: [
'./main.js',
],
output: {
path: path.join(__dirname, 'www'),
filename: 'bundle.js',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: [
'babel-loader',
],
},
{
test: /\.css$/,
use: [
"style-loader",
{
loader: "css-loader",
options: {
modules: true,
sourceMap: true,
importLoaders: 1,
localIdentName: "[name]--[local]--[hash:base64:8]"
}
},
"postcss-loader" // has separate config, see postcss.config.js nearby
]
},
{
test: /\.scss$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
{
loader: 'css-loader', options: {
sourceMap: true,
data: '@import "' + path.resolve(__dirname, 'theme.scss') + '";'
}
},
'postcss-loader',
{
loader: 'sass-loader', options: {
sourceMap: true,
data: '@import "' + path.resolve(__dirname, 'theme.scss') + '";'
}
},
],
})
}
]
},
plugins: [
new ExtractTextPlugin({
filename: 'style.css',
allChunks: true
}),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
}),
],
resolve: {
modules: [
path.join(__dirname, 'node_modules'),
],
},
};
我沒有得到一個錯誤,但它似乎像data
選項是完全忽略,因爲我的文件沒有被導入。
這裏是我的theme.scss
文件(位於client/theme.scss
):
@import "~react-toolbox/lib/colors";
$color-primary: $palette-red-500;
$color-primary-dark: $palette-red-700;
body {
background-color: black; //testing
}
我覺得我一定要在這裏做一些愚蠢的事,但我駕駛自己瘋了。我曾嘗試與theme.scss
文件(改變data
屬性data: '@import "' + path.resolve(__dirname, 'client/theme.scss') + '";'
)的路徑搞亂但這並不有所作爲。我很驚訝,我沒有收到某種錯誤。
有什麼建議嗎?
你有沒有找到一個解決辦法?我有同樣的問題,給出的答案不解決它。 – TJR