我已经从包含样式表转换为oldschool方式:
<link rel="stylesheet" href="./../css/main.css">
到Webpack方法:
var css = require('./../css/main.css');
它有效,但我不喜欢它将此文件中的css提取到内联标记中,因为在Dev Tools中调试它更加困难。例如,我不知道这些属性来自哪个文件和行:
如何将其移动到单独的文件或生成将我指向源文件的源地图?因此,当我检查Dev Tools时,它将如下所示:
我的webpack.config.js
:
var autoprefixer = require('autoprefixer');
module.exports = {
devtool: "css-loader?sourceMap",
module: {
loaders: [
{test: /\.(png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=100000'},
{
test: /\.css$/,
loader: "style-loader!css-loader!postcss-loader"
}
]
},
entry: [
'./static/js/app.js'
],
output: {
filename: './static/js/bundle.js'
},
watch: false,
postcss: function () {
return [autoprefixer];
}
};
我的app.js
:
var $ = require('jquery');
window.jQuery = $;
window.$ = $;
require('bootstrap-loader');
module.exports = (function () {
alert('IT WORKS!');
});
window.app = module.exports;
var css = require('./../css/main.css');
答案 0 :(得分:3)
要将样式从包中提取到外部样式表,您需要使用extract text plugin。
一般的webpack配置如下所示:
var ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
devtool: "source-map",
entry: 'path/to/entry.js',
output: {
path: 'path/to/bundle'
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /\.css$/,
loader: ExtracTextPlugin.extract('css-loader?sourceMap')
}
]
},
plugins: [
new ExtractTextPlugin('styles.css')
]
};
您应该注意的部分是使用devtool: "source-map"
作为调试部分,而使用插件,您提供了加载程序作为提取插件方法的参数:
loaders: [
{
test: /\.css$/,
loader: ExtracTextPlugin.extract('css-loader?sourceMap')
}
]
如果您需要例如sass-loader
,也可以链接加载器:
loaders: [
{
test: /\.scss$/,
loader: ExtracTextPlugin.extract('css-loader?sourceMap!sass-loader?sourceMap')
}
]
您不再需要样式加载器,但您也可以将其作为插件的后备加载器提供:
loaders: [
{
test: /\.css$/,
loader: ExtractTextPlugin.extract({
fallbackLoader: "style-loader",
loader: "css-loader?sourceMap"
})
}
]
并在插件数组中实例化插件并提供外部样式表所需的名称:
plugins: [
new ExtractTextPlugin('styles.css')
]
如果您有多个入口点,并且每个条目都有一个样式表,您也可以使用[name]
占位符。