webpack用了manifest为何还是每次都生成新的vendor?
webpack打包时,不是说用manifest的话,就能使提取出来的代码以后不再需要生成吗?现在的情况是:
每次webpack后,还是会生成新的vendor.xx.js啊。。
我想每次修改完自己的代码,webpack后只更新自己写的那个js,第三方的不会再生成多次。
下面是webpack.config.js
var webpack = require('webpack');
var path = require('path');
var HtmlwebpackPlugin = require('html-webpack-plugin');
var ROOT_PATH = path.resolve(__dirname);
var APP_PATH = path.resolve(ROOT_PATH, 'app');
var BUILD_PATH = path.resolve(ROOT_PATH, 'build');
var CleanWebpackPlugin = require('clean-webpack-plugin');
module.exports = {
entry:{
main: APP_PATH,
vendor: ['jquery']
},
output:{
path: BUILD_PATH,
filename: '[name].[hash:5].js'
},
devServer:{
historyApiFallback: true,
inline: true
},
module: {
loaders: [
{
test: /\.css$/,
loaders: ['style-loader', 'css-loader'],
include: APP_PATH
},
{
test: /\.(png|jpg)$/,
loader: 'url-loader?limit=40000'
},
{
test: /\.jsx?$/,
loader: 'babel-loader',
include: APP_PATH,
query: {
presets: ['es2015']
}
}
]
},
plugins: [
new HtmlwebpackPlugin({
title: 'Hello World app'
}),
//用于提取公共代码
new webpack.optimize.CommonsChunkPlugin({ //记得要在开头引入webpack
names: ['vendor','manifest'] //用于提取vendor
}),
new CleanWebpackPlugin(
['build/main.*.js','build/manifest.*.js'],//要删除的文件目录匹配
{
root:__dirname,
verbose:true,
dry:false
}
),
]
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正好今天刚了解过CommonsChunkPlugin这个插件,回答一下你的问题:
因为vendor和manifest需要用到不同的definition或minChunks,所以需要调用他两次,而你只调用了一次
请看webpack官网示例截图:
本人实验过后确认执行成功
页面地址:https://webpack.js.org/plugin...
CommonsChunkPlugin用这个插件的话 就会遇到你这样的问题,因为每次编译的时候 hash是变化的,所以一直在变。
建议用这个插件DllPlugin,附上一篇教程https://github.com/chenchunyo...