art*_*rks 8 javascript webpack
对于prod构建,我希望我的webpack配置有两个入口点,一个用于JS,一个用于SCSS,我希望将它们输出到两个单独的文件(一个JS,一个CSS).
但是,extract-text-webpack-plugin正在创建两个JS文件和一个CSS文件; 即SCSS的入口点产生了所需的CSS文件和我不想要的JS文件.这个未使用的JS文件只包含webpack样板和文件// removed by extract-text-webpack-plugin.所以它正在完成它的工作,但仍然创建这个不必要的文件.我的webpack配置是(显示相关部分):
const ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
entry: {
app: './client/src/app.js',
style: './client/src/app.scss'
},
output: {
path: __dirname + '/server/assets/',
publicPath: '/',
filename: 'bundle.[chunkhash].js',
},
module: {
loaders: [{
test: /\.js/,
exclude: /node_modules/,
include: /src/,
loader: 'babel-loader'
},{
test: /\.scss$/,
loader: ExtractTextPlugin.extract('style', 'css', 'sass'),
},{
test: /.*\.(woff|woff2|eot|ttf)$/i,
loader: "url-loader?limit=10000&mimetype=application/font-woff"
},{
test: /.*\.(png|svg|jpg)$/i,
loaders: [
'file?hash=sha512&digest=hex&name=[hash].[ext]',
'image-webpack?{progressive:true, optimizationLevel: 7, interlaced: false, pngquant:{quality: "65-90", speed: 4}}'
]
}]
},
plugins: [
new ExtractTextPlugin('bundle.[chunkhash].css', {
allChunks: true
})
]
};
Run Code Online (Sandbox Code Playgroud)
所以基本上输出是创建两个.js文件,每个条目一个,然后提取插件创建实际所需的.css文件.如何防止输出创建不必要的文件?
另一个选择是将合并app和style块合并为一个:
entry: {
app: [
'./client/src/app.js',
'./client/src/app.scss'
]
}
Run Code Online (Sandbox Code Playgroud)
这样webpack只会产生一个块 - app.同时ExtractTextPlugin将从中删除任何.scss模块.内容将被放入bundle.[chunkhash].css.
小智 4
style从 webpack 配置中删除入口点:
module.exports = {
entry: {
app: './client/src/app.js'
},
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后require从你的文件中获取app.js:
// app.js
require('./app.scss');
// ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4554 次 |
| 最近记录: |