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

下面就是Vue项目从webpack3.x升级webpack4.x的完整攻略。

升级前的准备

在升级之前,我们需要先做好以下准备工作:

  • 确定当前项目使用的webpack版本;
  • 了解当前使用的webpack配置,包括各个配置项以及对应的含义;
  • 相关依赖库的版本是否与webpack4.x兼容,如vue-loader、babel-loader等。

在这个前置知识的基础上,我们就可以开始升级了。

webpack升级方法

大致的升级流程如下:

  1. 更新webpack及相关loader的版本;
  2. 修改webpack配置,适配webpack4.x的变化;
  3. 测试及调整。

下面我将分步骤进行详细讲解。

步骤一:更新webpack及相关loader的版本

首先,我们需要更新webpack及相关loader的版本。将webpack及相关的loader的版本更新至webpack4.x的对应版本。具体对应关系可参考webpack官方文档

下面是一些常用webpack相关库版本号:

  • webpack@4.x
  • webpack-cli@3.x
  • vue-loader@15.x
  • babel-loader@8.x
  • css-loader@3.x
  • sass-loader@8.x
  • postcss-loader@3.x

将这些库的版本号更新后,我们就可以进入下一步了。

步骤二:修改webpack配置

  1. webpack配置的模式

  2. webpack3.x:

// webpack.conf.js
module.export = {
  // ...
  plugins: [
    new webpack.optimize.UglifyJsPlugin(), 
    // ...
  ]
}
  • webpack4.x:
// webpack.conf.js
module.export = {
  // ...
  mode: 'production', // development/production
  optimization: {
    minimize: true,
    minimizer: [new UglifyWebpackPlugin()],
  },
  // ...
}
  1. webpack配置的module规则项

  2. webpack3.x:

// webpack.conf.js
module.export = {
  module: {
    rules: [
      // ...
      { 
        test: /\.vue$/, 
        use: ['vue-loader'] 
      },
      // ...
    ]
  },
  // ...
}
  • webpack4.x:
// webpack.conf.js
module.export = {
  module: {
    rules: [
      // ...
      { 
        test: /\.vue$/, 
        loader: 'vue-loader' 
      },
      // ...
    ]
  },
  // ...
}
  • webpack3.x:
// webpack.conf.js
module.export = {
  module: {
    rules: [
      // ...
      { 
        test: /\.js$/, 
        use: ['babel-loader'] 
      },
      // ...
    ]
  },
  // ...
}
  • webpack4.x:
// webpack.conf.js
module.export = {
  module: {
    rules: [
      // ...
      { 
        test: /\.js$/, 
        loader: 'babel-loader' 
      },
      // ...
    ]
  },
  // ...
}
  1. webpack配置的plugins项

  2. webpack3.x:

// webpack.conf.js
module.export = {
  plugins: [
    // ...
    new ExtractTextWebpackPlugin('css/[name].css', { allChunks: true }),
    // ...
  ]
}
  • webpack4.x:
// webpack.conf.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.export = {
  plugins: [
    // ...
    new MiniCssExtractPlugin({ filename: 'css/[name].css' }),
    // ...
  ]
}

以上代码仅是一些简单的示例,具体的修改需根据实际情况进行调整。

步骤三:测试及调整

在修改webpack配置后,我们需要测试一下是否可以正常运行和打包。如果遇到问题,我们则需要根据报错信息,一步步进行调试。

示例

下面是一个简单的示例。

  • webpack3.x配置:
// webpack.conf.js
module.export = {
  mode: 'development',
  entry: './src/main.js',
  output: {
    filename: 'boundle.js',
    path: path.resolve(__dirname, 'dist'),
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: ['babel-loader'],
      },
      {
        test: /\.vue$/,
        use: ['vue-loader'],
      },
      {
        test: /\.css$/,
        use: ExtractTextWebpackPlugin.extract({
          fallback: 'style-loader',
          use: ['css-loader', 'postcss-loader'],
        }),
      },
    ],
  },
  plugins: [
    new webpack.optimize.UglifyJsPlugin(),
    new ExtractTextWebpackPlugin('css/[name].css', { allChunks: true })
  ],
}
  • webpack4.x配置:
// webpack.conf.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const UglifyWebpackPlugin = require('uglifyjs-webpack-plugin');

module.export = {
  mode: 'production',
  entry: './src/main.js',
  output: {
    filename: 'boundle.js',
    path: path.resolve(__dirname, 'dist'),
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
      },
      {
        test: /\.vue$/,
        loader: 'vue-loader',
      },
      {
        test: /\.css$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader',
          'postcss-loader',
        ],
      },
    ],
  },
  optimization: {
    minimize: true,
    minimizer: [new UglifyWebpackPlugin()],
  },
  plugins: [
    new MiniCssExtractPlugin({ filename: 'css/[name].css' }),
  ],
}

这里主要是由ExtractTextWebpackPlugin插件改为使用MiniCssExtractPlugin插件,并且在plugins项中使用了对应插件的方式进行配置,并且使用了对应版本的UglifyWebpackPlugin处理js文件。

希望以上内容对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue项目从webpack3.x升级webpack4不完全指南 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue验证码60秒倒计时功能简单实例代码

    那么我们来逐步讲解如何使用Vue实现验证码60秒倒计时功能的步骤和代码实现。 步骤一:安装Vue 首先,需要安装Vue,可通过以下命令安装: npm install vue 步骤二:创建Vue实例 在HTML页面中引入Vue库后,需创建Vue实例,用于管理页面数据和操作行为: const vueApp = new Vue({ el: ‘#app’, data…

    Vue 2023年5月29日
    00
  • JavaScript设计模式之原型模式分析【ES5与ES6】

    JavaScript设计模式之原型模式分析【ES5与ES6】 什么是原型模式? 在JavaScript中,每个对象都有原型(prototype)属性。原型是一个对象,其他对象可以通过它来继承属性和方法。原型模式就是通过原型来创建新对象的模式。 原型模式是一种创建型设计模式,它允许我们通过克隆现有对象的方式来创建新对象,而不是通过使用构造函数创建。 实现原型模…

    Vue 2023年5月28日
    00
  • Vue路由this.route.push跳转页面不刷新的解决方案

    首先,对于Vue路由中通过this.route.push方法跳转页面后不刷新的问题,可以采用使用this.$router.go(0)重新加载当前页面的方式来解决。具体解决方法如下: 在需要刷新页面的Vue组件中,可以使用mounted钩子函数来实现页面数据的重新获取和渲染,例如: <template> <div> <h2>…

    Vue 2023年5月28日
    00
  • 详解Puppeteer前端自动化测试实践

    详解Puppeteer前端自动化测试实践 引言 前端自动化测试作为保证前端代码质量的重要手段,在现在的前端开发中已经非常普遍。而Puppeteer作为谷歌官方出品的一款自动化测试工具,其强大的能力受到了越来越多前端从业者的青睐。本文将详细讲解如何使用Puppeteer实现前端自动化测试。 Puppeteer简介 Puppeteer是一个基于Node.js的库…

    Vue 2023年5月28日
    00
  • vue2源码解析之全局API实例详解

    “vue2源码解析之全局API实例详解”是一篇深入分析Vue.js源码的文章,主要介绍了Vue.js全局API的相关实例,为读者深入了解Vue.js源码提供了基础。 本文主要涉及到Vue.js的全局API实例,包括Vue.extend、Vue.nextTick、Vue.set、Vue.delete等。其中,Vue.extend用于创建具有复用性的组件构造器;…

    Vue 2023年5月27日
    00
  • JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析

    下面是详细讲解“JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析”的完整攻略。 1. 需求分析 我们的目标是实现在HTML页面中自定义一个上传图片按钮,并且在用户选择上传图片后,能够将图片显示在页面上。 需要具备以下功能: 自定义上传图片按钮 选择图片文件后上传并显示图片 将图片文件转换为base64编码 2. HTML布局 首先,我们需要在HT…

    Vue 2023年5月28日
    00
  • Vue实现选择城市功能

    Vue实现选择城市功能可以分为以下步骤: 1. 引入第三方城市数据 为了实现城市选择功能,我们需要先引入第三方城市数据,这里可以选择 city.json 这个json文件,里面包含了全国各个城市的数据。 2. 安装并引入element-ui组件库 Vue框架本身并不提供选择框组件,所以我们需要借助第三方的UI组件库。这里我们选择element-ui组件库,并…

    Vue 2023年5月28日
    00
  • vue中实现监听数组内部元素

    要实现监听Vue数组内部元素的变化,可以使用Vue提供的watch方法和变异方法。下面是完整的攻略: 1. 使用Vue提供的watch方法 在Vue中,可以使用watch方法来监视数组内部元素的变化。 下面是一个示例代码: <template> <div> <ul> <li v-for="(item, in…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部