前段时间,泡面将自己的一个Vue-cli构建的前端框架从webpack3.x升级到了4.x版本,现在才拉出来记录一下,已备忘之用,也和大家分享一下,以免大家采坑。
原先的环境
- 项目原先通过Vue-cli 2.9.3 版本构建,原先使用的webpack 3.x版本
- 首先需要对基础包进行更新(package.json)
- webpack 更新到4.x版本,泡面这里更新到了4.28.3
- 更新webpack-dev-server,泡面更新到了3.1.14版本,
- 安装webpack-cli,泡面安装的是3.2.1版本
除了上面的这几个,还需要更新下面几个:
- vue-loader 泡面直接升级到了15版本,
- eslint-loader 升级到了1.7.1,这个当时在做启动的时候提示了一些错误,所以索性也就升级了.
- happypack, 泡面使用了多线程加速,所以这个也必须要升级,否则会报错,泡面更新到了5.0.1
- html-webpack-plugin, 这个也需要更新,否则会提示错误,泡面这里升级到了3.2.0
除了上面几个,还需要额外下载一个:
- mini-css-extract-plugin, 该包是要替换掉extract-text-webpack-plugin来使用,所以后者就遗弃掉了.
接着我们修改一下webpack.base.conf.js
,没有使用happypack的这步骤可略过...
泡面这里不知道为什么不能使用happypack来挂载vue-loader
,否则会提示错误,所以泡面这里将原先的happypack的配置修改回了原先:
... const vueLoaderConfig = require('./vue-loader.conf') ... module.exports = { ... { test: /\.vue$/, // loader: 'happypack/loader"htmlcode">... // 开发环境引入 mode: 'development', ... module: { ... } devServer: { ... }webpack4需要手动引入
vue-loader
插件,因为泡面是从14版本升级到15版本,点我查看官方文档,如何从 v14 迁移,所以这里需要引入:
... const VueLoaderPlugin = require('vue-loader/lib/plugin') ... module.export = { ... plugins: [ ... // 引入vue-loader插件 new VueLoaderPlugin(), ... // 同时,泡面注释掉了vue-loader的happypack // new Happypack({ // id: 'happy-vue', // loaders: [{ // loader: 'vue-loader', // options: vueLoaderConfig // }] // }) ] }接着, 以下插件被废弃掉了,直接注释掉
- webpack.DefinePlugin
- webpack.NamedModulesPlugin
- webpack.NoEmitOnErrorsPlugin
ok, 这个文件就改完了.
接着来修改webpack.prod.conf.js
同开发环境,需要引入mode和vue-loader
,一模一样,所以这里不赘述了.
接着,我们需要在配置表里添加optimization选项:
... output: { ...}, // 这里添加 optimization: { runtimeChunk: { name: 'manifest' }, minimizer: [ new UglifyJsPlugin({ cache: true, parallel: true, sourceMap: config.build.productionSourceMap, uglifyOptions: { warnings: false } }), new OptimizeCSSPlugin({ cssProcessorOptions: config.build.productionSourceMap "htmlcode">... const MiniCssExtractPlugin = require('mini-css-extract-plugin') ... plugins: [ ... new MiniCssExtractPlugin({ filename: utils.assetsPath('css/[name].[contenthash].css') }), ... ]然后, 我们需要把废弃掉的插件注释掉:
webpack.DefinePlugin UglifyJsPlugin (放到optimization里了) ExtractTextPlugin OptimizeCSSPlugin (放到optimization里了) CommonsChunkPlugin (所有的...)ok, 至此该文件就调整完了.
最后一个utils.js
这里主要是需要添加mini-css-extract-plugin插件
... // 注释掉原来的插件 // const ExtractTextPlugin = require("extract-text-webpack-plugin"); const MiniCssExtractPlugin = require('mini-css-extract-plugin') ... // 找到: // return ExtractTextPlugin.extract({ // use: loaders, // fallback: "vue-style-loader", // publicPath: '../../' // }); // 改为: return [MiniCssExtractPlugin.loader].concat(loaders)ok, 大功告成! 至此webpack4的配置文件就全部修改完成了.
目前, 泡面至在此记录流水账,回头性能测试再发文章记录.
ps: 如果出现这种错误
error: [vue-loader] vue-template-compiler must be installed as a peer dependency, or a compatible compiler implementation must be passed via options.
请重新安装一下
vue-template-compiler
总结
以上所述是小编给大家介绍的Vue项目从webpack3.x升级webpack4不完全指南,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。