Vue项目从webpack3.x升级webpack4不完全指南

栏目: 编程语言 · 发布时间: 5年前

内容简介:前段时间,泡面将自己的一个Vue-cli构建的前端框架从除了上面的这几个,还需要更新下面几个:除了上面几个,还需要额外下载一个:

前段时间,泡面将自己的一个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?id=happy-vue'
        loader: 'vue-loader',
        options: vueLoaderConfig
    },
  ...  
}
复制代码

接着来调整webpack.dev.conf.js

首先在合并配置的地方引入 mode

...
  // 开发环境引入
  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

同开发环境,需要引入 modevue-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
        ? { safe: true, map: { inline: false } }
        : { safe: true }
    }),
    ],
    splitChunks:{
      chunks: 'async',
      minSize: 30000,
      minChunks: 1,
      maxAsyncRequests: 5,
      maxInitialRequests: 3,
      name: false,
      cacheGroups: {
        vendor: {
          name: 'vendor',
          chunks: 'initial',
          priority: -10,
          reuseExistingChunk: false,
          test: /node_modules\/(.*)\.js/
        },
        styles: {
          name: 'styles',
          test: /\.(scss|css)$/,
          chunks: 'all',
          minChunks: 1,
          reuseExistingChunk: true,
          enforce: true
        }
      }
    }
  },
  plugins: [...]  
复制代码

接着,我们需要引入 mini-css-extract-plugin 插件,并添加到插件里:

...
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

完!碎觉~

文章参考:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

现代应用数学手册

现代应用数学手册

《现代应用数学手册》编委会 / 清华大学出版社 / 2005-1-1 / 48.00元

本书是进行科学计算的常备工具书,内容新颖,查阅方便,实用性强。主要介绍生产、科研、管理、数学等实践中在计算机上使用的各种计算方法和技巧。全书分为14章,依次为数值计算概论、插值法、函数逼近与曲线拟合、数值积分与数值微分、方程求根、线性方程组的直接解法和迭代解法、矩阵特征值问题、非线性方程组数值解与最优化方法、常微分方程初值问题和边值问题的数值解法、偏微分方程的数值解法、多重网络法和积分方程数值解法......一起来看看 《现代应用数学手册》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具