【发布时间】:2017-09-08 11:08:51
【问题描述】:
这是我的 Webpack 配置的公开要点,它本质上是从 Angular CLI 弹出的稍微修改的 Webpack 配置:
https://gist.github.com/sparkbuzz/3cd017671751083e2af8c10a1ad37747
此 Webpack 构建正在生成 styles.bundle.css AND styles.bundle.js,但 styles.bundle.js 包含注释行内容如下:
// removed by extract-text-webpack-plugin
styles.bundle.js 文件完全是多余的,因为提取插件删除了它的所有内容并按预期将其转储到 styles.bundle.css 中。
如何避免加载 styles.bundle.js,因为 styles.bundle.css 文件是从生成的 中的链接加载的index.html.
在 webpack.config.js 中有两个 extract-text-webpack-plugin 实例:
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const extractMainCSS = new ExtractTextPlugin('[name].bundle.css');
const extractSplashCSS = new ExtractTextPlugin('splash.css');
样式有一个入口点,这就是拥有 styles.bundle.js 的原因:
styles: [
"./src/styles/styles.scss",
"./src/styles/vendor.scss"
],
然后是一些规则来生成splash.css和styles.bundle.css
{
include: [
path.join(process.cwd(), "src/styles/splash.scss")
],
exclude: [
path.join(process.cwd(), "src/styles/styles.scss"),
path.join(process.cwd(), "src/styles/vendor.scss")
],
test: /.scss$/,
loaders: extractSplashCSS.extract({
use: [
'css-loader',
'postcss-loader',
'sass-loader'
]
})
},
{
exclude: [
path.join(process.cwd(), "src/styles/styles.scss"),
path.join(process.cwd(), "src/styles/vendor.scss"),
path.join(process.cwd(), "src/styles/splash.scss")
],
test: /\.scss$/,
loaders: [
"exports-loader?module.exports.toString()",
"css-loader?{\"sourceMap\":false,\"importLoaders\":1}",
"postcss-loader",
"sass-loader"
]
},
{
exclude: [
path.join(process.cwd(), "src/styles/splash.scss"),
],
include: [
path.join(process.cwd(), "src/styles/styles.scss"),
path.join(process.cwd(), "src/styles/vendor.scss")
],
test: /\.scss$/,
loaders: extractMainCSS.extract({
use: [
"css-loader?{\"sourceMap\":false,\"importLoaders\":1}",
"postcss-loader",
"sass-loader"
]
})
},
并且提取插件的两个实例已添加到插件对象中:
plugins: [
extractMainCSS,
extractSplashCSS,
【问题讨论】:
标签: webpack webpack-2 extract-text-plugin