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

yizhihongxing

下面就是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日

相关文章

  • 使用Vue3实现一个Upload组件的示例代码

    请允许我来详细讲解”使用Vue3实现一个Upload组件的示例代码”的完整攻略。 第一步:安装vue3 首先,我们需要安装Vue.js 3,可以通过以下命令进行安装: npm install vue@next 第二步:安装依赖 接下来,我们还需要安装一些依赖,包括 axios 以及 @vue/cli-plugin-babel,可以通过以下命令进行安装: np…

    Vue 2023年5月28日
    00
  • Vue对象的单层劫持图文详细讲解

    针对“Vue对象的单层劫持”这个问题,我会进行详细讲解。 什么是 Vue 对象的单层劫持 在 Vue.js 框架中,当我们使用 Vue 来管理数据时,其实是通过建立 data 对象来实现的。Vue 采用了双向数据绑定的机制,当该对象中的值发生变化时,页面中的数据也随之发生变化。 而在 Vue.js 框架中,Vue 对象是单层劫持的,这意味着 Vue 在创建 …

    Vue 2023年5月28日
    00
  • 前端项目中的Vue、React错误监听

    前端项目中的Vue、React错误监听,是一项非常重要的工作。在开发过程中,难免会出现各种错误,有些错误不及时解决可能会导致应用程序崩溃或无法正常运行。因此,为了尽可能地避免这种情况的发生,在Vue和React项目中及时监听错误,并及时处理和提醒用户是非常必要的。 Vue错误监听的完整攻略: Vue提供了一个全局错误处理函数,可以用来处理项目中的错误,通过在…

    Vue 2023年5月28日
    00
  • 使用Vite2+Vue3渲染Markdown文档的方法实践

    使用Vite2+Vue3渲染Markdown文档的方法实践,可以按照以下步骤进行: 准备工作 安装Node.js,下载地址:https://nodejs.org/en/download/。 在终端中执行以下命令安装Vite:npm install -g vite。 创建一个新的Vue3项目:npm init vite@latest project-name …

    Vue 2023年5月28日
    00
  • 基于vue-cli3+typescript的tsx开发模板搭建过程分享

    下面详细讲解在vue-cli3和typescript环境下如何搭建tsx模板的开发环境。 创建一个新项目 首先,我们需要安装vue-cli3脚手架工具,可以使用npm或yarn安装。 npm install -g @vue/cli # 或者 yarn global add @vue/cli 安装完成后,我们使用vue-cli3创建一个新的项目,选择手动配置选…

    Vue 2023年5月27日
    00
  • 在vue中,v-for的索引index在html中的使用方法

    在vue中,v-for指令允许我们遍历数组或对象,并根据每个元素生成相应的DOM节点。当我们遍历一个数组时,可以通过v-for指令获取每个元素对应的索引index值,在渲染DOM节点时可以使用该索引值。 v-for索引index在HTML中的使用方法 在HTML结构中,我们可以使用 {{ }} 语法来引用v-for指令中的索引index值。例如: <d…

    Vue 2023年5月27日
    00
  • 为什么推荐使用JSX开发Vue3

    为什么推荐使用JSX开发Vue3 在Vue3中,JSX是一种新的语法格式,用于代替Vue2中的template标签。它允许将组件结构与JavaScript语法相结合,并提供更好的类型检查和编辑器支持。以下是推荐使用JSX开发Vue3的原因: 1.更直观易懂:JSX语法格式更加接近JavaScript语言本身,比Vue2中的template标签更直观易懂。使用…

    Vue 2023年5月27日
    00
  • React DnD如何处理拖拽详解

    React DnD是封装的HTML5拖放API的React组件,可用于构建拖放交互功能。下面详细讲解React DnD如何处理拖拽,在这个过程中,将提供两个示例说明。 1. 拖拽源 拖拽源是可以被拖拽的组件。在React DnD中,拖拽源分为两种:简单的拖拽源和自定义拖拽源。 简单拖拽源 简单的拖拽源指的是一个纯组件,该组件可以设置可以被拖拽的数据类型以及数…

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