本文仅简单记录下基于vue-webpack模板升级到webpack4的过程

快速部署

  Vue CLI 的包名称由 vue-cli 改成了 @vue/cli

# 全局安装 vue-cli
$ npm install --global @vue/cli
# 创建一个基于 webpack 模板的新项目
$ vue init webpack my-project

升级

  升级的操作很简单,先删除,再安装即可(淘宝镜像)。但要注意webpack4版本中 webpack 与 webpack-cli 已分离为两个模块,需要都安装,建议本地安装即可。

  1. 升级webpack主要部件(PS:node版本 >= 8.9.4)

    npm uninstall -D webpack webpack-bundle-analyzer webpack-dev-server webpack-merge
    npm install -D webpack webpack-cli webpack-bundle-analyzer webpack-dev-server webpack-merge
  2. 升级webpack相关插件

    npm uninstall -D copy-webpack-plugin css-loader eslint-loader file-loader html-webpack-plugin url-loader  friendly-errors-webpack-plugin optimize-css-assets-webpack-plugin uglifyjs-webpack-plugin
    npm install -D copy-webpack-plugin css-loader eslint-loader file-loader html-webpack-plugin url-loader friendly-errors-webpack-plugin optimize-css-assets-webpack-plugin uglifyjs-webpack-plugin
  3. 升级vue-loader,替换webpack相关插件

    npm uninstall -D vue-loader extract-text-webpack-plugin
    npm install -D vue-loader mini-css-extract-plugin

配置

  下面的配置文件都是在build文件下:

  1. utils.js

    // const ExtractTextPlugin = require('extract-text-webpack-plugin')
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    ...
    if (options.extract) {
    // return ExtractTextPlugin.extract({
    // use: loaders,
    // fallback: 'vue-style-loader'
    // })
    // MiniCssExtractPlugin.loader,
    return [MiniCssExtractPlugin.loader].concat(loaders)
    } else {
    return ['vue-style-loader'].concat(loaders)
    }
  2. webpack.base.conf.js
    const { VueLoaderPlugin } = require('vue-loader')
    ...
    plugins: [
    // vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin in your webpack config.
    new VueLoaderPlugin()
    ],
    // webpack4新增了一个mode配置选择,用来表示配置模式的选择情况
    module.exports = {
    mode: process.env.NODE_ENV,
    ...
  3. webpack.prop.conf.js
    // 将ExtractTextPlugin替换为MiniCssExtraPlugin
    const MiniCssExtractPlugin = require("mini-css-extract-plugin")
    // const ExtractTextPlugin = require('extract-text-webpack-plugin') ...
    // new ExtractTextPlugin({
    new MiniCssExtractPlugin({
    filename: utils.assetsPath('css/[name].[contenthash].css'),
    allChunks: true,
    }),
    ...
    // 删除UglifyJsPlugin配置项
    const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
    ...
    new UglifyJsPlugin({
    uglifyOptions: {
    compress: {
    warnings: false
    }
    },
    sourceMap: config.build.productionSourceMap,
    parallel: true
    })
    // 删除CommonsChunkPlugin配置项 && 添加optimization配置项
    // new webpack.optimize.CommonsChunkPlugin({
    // name: 'vendor',
    // minChunks (module) {
    // return (
    // module.resource &&
    // /\.js$/.test(module.resource) &&
    // module.resource.indexOf(
    // path.join(__dirname, '../node_modules')
    // ) === 0
    // )
    // }
    // }),
    // new webpack.optimize.CommonsChunkPlugin({
    // name: 'manifest',
    // minChunks: Infinity
    // }),
    // new webpack.optimize.CommonsChunkPlugin({
    // name: 'app',
    // async: 'vendor-async',
    // children: true,
    // minChunks: 3
    // }), // 与plugins同级
    optimization: {
    splitChunks: {
    chunks: 'async',
    minSize: 30000,
    minChunks: 1,
    maxAsyncRequests: 5,
    maxInitialRequests: 3,
    automaticNameDelimiter: '~',
    name: true,
    cacheGroups: {
    vendors: {
    test: /[\\/]node_modules[\\/]/,
    priority: -10
    },
    default: {
    minChunks: 2,
    priority: -20,
    reuseExistingChunk: true
    }
    }
    },
    runtimeChunk: { name: 'runtime' }
    },

总结

  demo地址:vue-webpack4

参考地址:

  https://cli.vuejs.org

  https://segmentfault.com/a/1190000014516899

  https://www.cnblogs.com/xiaohuochai/archive/2018/06/19/9196906.html

vue-webpack模板升级到webpack4的更多相关文章

  1. 【原创】从零开始搭建Electron+Vue+Webpack项目框架(六)Electron打包,同时构建客户端和web端

    导航: (一)Electron跑起来(二)从零搭建Vue全家桶+webpack项目框架(三)Electron+Vue+Webpack,联合调试整个项目(四)Electron配置润色(五)预加载及自动更 ...

  2. Vue.js中组件传参的方法 - 基于webpack模板

    在Vuejs中, 组件之间的传参是今天第一次接触, 之前写的组件互相之间都是独立的, 弗敢专也, 必以分人 环境: node.js npm vue-cli 以上安装请自行百度 一.项目创建 $ vue ...

  3. 用Vue-cli生成vue+webpack的项目模板怎么设置为vue1.0版本?

    用Vue-cli生成vue+webpack的项目模板 $ npm install -g vue-cli $ vue init webpack my-project $ cd my-project $ ...

  4. 03慕课网《vue.js2.5入门》——Vue-cli的安装,创建webpack模板项目

    安装Vue-cli 第一种 貌似不可以,然后用了第二种,但是重装系统后,第二种不能用了,用了第一种可以 # 全局安装vue -cli命令npm install --global vue-cli # 创 ...

  5. NPM安装vue-cli,并创建vue+webpack项目模板

    1.安装npm npm 是node.js 的包管理工具, 安装流程地址:https://docs.npmjs.com/cli/install  估计会非常慢,我们可以使用淘宝NPM镜像下载安装:htt ...

  6. 前端笔记之Vue(一)初识SPA和Vue&webpack配置和vue安装&指令

    一.单页面应用(SPA) 1.1 C/S到B/S页面架构的转变 C/S:客户端/服务器(Client/Server)架构的软件. C/S 软件的特点: ① 从window桌面双击打开 ② 更新的时候会 ...

  7. 从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(一)

    摘要:随着前端技术的飞速发展,越来越多的技术领域开始被前端工程师踏足.从NodeJs问世至今,各种前端工具脚手架.服务端框架层出不穷,“全栈工程师”对于前端开发者来说,再也不只是说说而已.在NodeJ ...

  8. Vue + Webpack + Vue-loader 系列教程(2)相关配置篇

    原文地址:https://lvyongbo.gitbooks.io/vue-loader/content/ 使用预处理器 在 Webpack 中,所有的预处理器需要和一个相应的加载器一同使用.vue- ...

  9. windows环境下搭建vue+webpack的开发环境

    前段时间一直在断断续续的看vue的官方文档,后来就慢慢的学习搭建vue的开发环境,已经有将近两周了,每到最后一步的时候就会报错,搞的我好郁闷,搁置了好几天,今天又接着搞vue的开发环境,终于成功了.我 ...

随机推荐

  1. .net 文件接口的封装,写日志,创建文件log

    public class FileSupport { public static FileSupport Instance = new FileSupport(); public static str ...

  2. 是未来还是“有毒”?紧抓球鞋风口的毒APP机遇与危机并存

    编辑 | 于斌 出品 | 于见(mpyujian) 新一代的"潮流"之风正在席卷新生代消费市场,从去年开始,国内二手球鞋交易领域突然开始火爆,大有成为新一轮"风口&quo ...

  3. WPF学习笔记四之命令

    1.概念 对于程序来说,命令就是一个个任务,例如保存,复制,剪切这些操作都可以理解为一个个命令.即当我们点击一个复杂按钮时,此时就相当于发出了一个复制的命令,即告诉文本框执行一个复杂选中内容的操作,然 ...

  4. js处理json字符串

    后台输出的字符串为 res= {"result":"true","data":"提交成功"} 前台js无法转化成对象,需 ...

  5. mysql-sql逻辑查询顺序

    1.sql逻辑执行顺序(物理执行顺序可能会因索引而不同) SELECT  7  DISTINCT 8 FROM  1 JOIN     2 ON      3 WHERE  4 GROUP BY 5 ...

  6. centos 7 安装 nginx maxmind GEO IP IP库相关部署

    centos 7 上为nginx 增加Geo IP的功能 yum install gcc gcc-c++ make automake autoconf libtool wget unzip -y if ...

  7. 【C语言】一堆数组中存放了10个小于100的整数,请编程对所有数据按照从小到大的顺序进行排序,若个位数相等,则按照十位从小到大的顺序排序,输出排序后的结果

    分析:取余,判断个位是否相等,利用冒泡法排序 #include <stdio.h> int main() { ] = { ,,,,,,,,, };/*数组*/ int i, j, k; ; ...

  8. QT+VS后中文字符乱码问题

    在VS中写QT项目会出现中文乱码现象,尤其是控件的中文乱码以及qDebug()时候中文乱码通用的解决办法: 在头文件(.h)前面加上如下代码: #ifdef WIN32 #pragma executi ...

  9. bitset 位运算

    1. 判断一个数是否是2的方幂n > 0 && ((n & (n - 1)) == 0 ) 解释((n & (n-1)) == 0): 如果A&B==0, ...

  10. Codeforces Round #622 (Div. 2)C2

    题意 N长度为500000以内,一个数字两边的数字不能都比他高,最多高一边 求他最大sum.叙述有问题,直接看样例 3 10 6 8 因为6左右都比他高,选择10 6 6或者6 6  8,sum明显前 ...