详解基于Vue cli生成的Vue项目的webpack4升级

yizhihongxing

下面我将详细讲解“详解基于Vue CLI生成的Vue项目的webpack4升级”的完整攻略,包括具体步骤和示例说明。

1. 升级准备

1.1. 确认Vue CLI版本

首先需要确认当前使用的Vue CLI版本是否是3.x版本。如果不是3.x,需要先进行升级。可以通过以下命令检查版本:

vue --version

如果版本低于3.x,可以通过以下命令进行升级:

npm install -g @vue/cli

1.2. 确认webpack版本

确认当前生成的Vue项目中使用的是webpack3还是webpack4。如果不确定,可以查看package.json文件中的webpackwebpack-dev-server依赖项的版本号,如果版本是3.x,说明当前项目使用的是webpack3。

2. 升级过程

2.1. Vue CLI升级

如果确认当前使用的是Vue CLI 2.x版本,需要先卸载Vue CLI 2.x,然后安装Vue CLI 3.x。可以通过以下命令来卸载Vue CLI 2.x:

npm uninstall -g vue-cli

然后通过以下命令安装Vue CLI 3.x:

npm install -g @vue/cli

2.2. 创建新项目并检查配置

创建一个新的Vue项目:

vue create my-project

创建完成后,进入项目文件夹,并检查webpack.dev.conf.jswebpack.prod.conf.js文件,确认是否包含如下插件:

const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')

如果不存在这些插件,需要手动添加它们:

const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')

module.exports = {
  plugins: [
    new MiniCssExtractPlugin({
      filename: 'css/[name].[contenthash:8].css',
      chunkFilename: 'css/[name].[contenthash:8].css'
    }),
    new OptimizeCSSAssetsPlugin({
      cssProcessorOptions: {
        safe: true
      }
    })
  ],
  optimization: {
    minimizer: [
      new UglifyJsPlugin({
        cache: true,
        parallel: true,
        sourceMap: true
      })
    ]
  }
}

注意,optimize-css-assets-webpack-pluginuglifyjs-webpack-plugin已经不再是webpack的内置插件,需要手动安装并引入。

npm install --save-dev optimize-css-assets-webpack-plugin uglifyjs-webpack-plugin

2.3. 升级webpack

首先需要升级项目中使用的webpack依赖包:

npm install --save-dev webpack@4 webpack-cli

然后需要对webpack配置文件进行相应修改。

2.3.1. webpack.common.conf.js

首先修改webpack.common.conf.js文件,更新loader配置:

const MiniCssExtractPlugin = require('mini-css-extract-plugin')

module.exports = {
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          extractCSS: true,
          cssModules: {
            localIdentName: '[name]-[hash:base64:5]',
            camelCase: true
          }
        }
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/
      },
      {
        test: /\.css$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader'
        ]
      },
      {
        test: /\.less$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader',
          'less-loader'
        ]
      },
      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: 'img/[name].[hash:7].[ext]'
        }
      },
      {
        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: 'media/[name].[hash:7].[ext]'
        }
      },
      {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: 'fonts/[name].[hash:7].[ext]'
        }
      }
    ]
  }
}

注意:vue-style-loader已经不再需要,使用MiniCssExtractPlugin.loader替代即可。

2.3.2. webpack.dev.conf.js

然后修改webpack.dev.conf.js文件:

const merge = require('webpack-merge')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const baseWebpackConfig = require('./webpack.common.conf')

module.exports = merge(baseWebpackConfig, {
  mode: 'development',
  devtool: 'cheap-module-eval-source-map',
  devServer: {
    hot: true,
    open: true,
    contentBase: 'dist'
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'src/index.html',
      inject: true
    })
  ],
  optimization: {
    usedExports: true
  },
  performance: {
    hints: false
  }
})

主要更新如下:

  • 添加mode选项
  • 添加devtool选项
  • 添加devServer选项
  • 修改plugins选项,删除原来的extract-text-webpack-pluginoptimize-css-assets-webpack-plugin插件,替换成mini-css-extract-plugin
  • 添加optimization.usedExports选项

2.3.3. webpack.prod.conf.js

最后是webpack.prod.conf.js文件:

const merge = require('webpack-merge')
const CleanWebpackPlugin = require('clean-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const VueLoaderPlugin = require('vue-loader/lib/plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const baseWebpackConfig = require('./webpack.common.conf')

module.exports = merge(baseWebpackConfig, {
  mode: 'production',
  devtool: false,
  output: {
    filename: 'js/[name].[chunkhash:8].js',
    chunkFilename: 'js/[name].[chunkhash:8].js'
  },
  plugins: [
    new VueLoaderPlugin(),
    new CleanWebpackPlugin(),
    new MiniCssExtractPlugin({
      filename: 'css/[name].[contenthash:8].css',
      chunkFilename: 'css/[name].[contenthash:8].css'
    }),
    new OptimizeCSSAssetsPlugin({
      cssProcessorOptions: {
        safe: true
      }
    })
  ],
  optimization: {
    minimizer: [
      new UglifyJsPlugin({
        cache: true,
        parallel: true,
        sourceMap: true
      })
    ]
  },
  performance: {
    hints: 'warning'
  }
})

主要更新如下:

  • 添加mode选项
  • 添加devtool选项
  • 修改output.filenameoutput.chunkFilename
  • 修改plugins选项,添加VueLoaderPlugin插件,删除原来的extract-text-webpack-pluginoptimize-css-assets-webpack-plugin插件,替换成mini-css-extract-plugin
  • 添加optimization.minimizer选项
  • 修改performance.hints选项

2.4. 测试

升级完成后,使用以下命令启动本地开发服务器:

npm run serve

如果没有报错并且能够正常访问页面,说明升级完成。

3. 示例说明

示例如下

以下是一个使用Vue CLI生成的Vue项目中的webpack升级示例:

  1. 确认当前使用Vue CLI的版本是否是3.x,如果不是,需要通过以下命令升级:
npm install -g @vue/cli
  1. 进入Vue项目文件夹,检查webpack.dev.conf.jswebpack.prod.conf.js文件。

  2. 如果希望使用webpack4,需要先升级webpack依赖包:

npm install --save-dev webpack@4 webpack-cli
  1. 修改webpack.common.conf.js文件中的loader配置。

  2. 修改webpack.dev.conf.js文件和webpack.prod.conf.js文件中的plugins和optimization选项。

  3. 运行npm run serve命令,测试升级后的项目是否正常运行。

以上就是升级基于Vue CLI生成的Vue项目的webpack4的完整攻略,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解基于Vue cli生成的Vue项目的webpack4升级 - Python技术站

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

相关文章

  • 详解vue中组件参数

    下面我将详细讲解“详解vue中组件参数”的完整攻略。 引言 在Vue中,组件参数是指传递给组件的数据和选项。Vue组件的参数可以分为两类:props和attrs。props是父组件传递给子组件的数据,而attrs是指父组件传递给子组件的非props数据,比如style和class等。 props props是指父组件传递给子组件的数据。props可以在子组件…

    Vue 2023年5月27日
    00
  • vue中添加与删除关键字搜索功能

    下面是“vue中添加与删除关键字搜索功能”的完整攻略。 1.创建搜索框 首先,我们需要在页面上创建一个输入框,供用户输入搜索关键字。可以使用Vue中的v-model指令来实现双向数据绑定,将用户输入的关键字与Vue实例中的数据绑定起来。 示例代码: <template> <div> <input type="text&…

    Vue 2023年5月27日
    00
  • 关于Element-ui中Table表格无法显示的问题及解决

    关于Element-ui中Table表格无法显示的问题及解决 问题描述 在使用Element-ui的Table组件时,可能会遇到表格无法渲染的问题,常见的表现为表格的thead正常显示,但tbody中没有任何数据显示。 可能原因 数据不符合要求。 Table组件配置不正确。 Element-ui版本不兼容。 解决方案 1. 数据不符合要求 在使用Table组…

    Vue 2023年5月28日
    00
  • vue中如何去掉空格的方法实现

    首先需要明确一下,“vue中如何去掉空格的方法实现”这个问题具体指什么样的空格。如果是指字符串中的空格,那么可以采用 JavaScript 内置的字符串方法 replace() 来实现去除,示例如下: // 去除字符串中所有空格 let str = ‘ hello world ‘ str = str.replace(/\s/g, ”) console.lo…

    Vue 2023年5月27日
    00
  • vue视频播放插件vue-video-player的具体使用方法

    下面是关于vue-video-player的详细使用攻略。 1. 安装vue-video-player 首先需要在你的Vue项目中安装vue-video-player,可以运行下面的命令: npm install vue-video-player –save 或者通过yarn来安装: yarn add vue-video-player 2. 引入vue-v…

    Vue 2023年5月28日
    00
  • vue 全局环境切换问题

    我来详细讲解一下“Vue 全局环境切换问题”的攻略。 什么是 Vue 全局环境切换问题? Vue 全局环境切换问题是指在 Vue 应用中,我们可能需要在开发环境、测试环境和生产环境之间进行切换,而这些环境中可能存在不同的配置项、请求接口地址等。如何在不同环境下切换这些配置,是 Vue 全局环境切换问题需要解决的核心问题。 解决方案 我们可以通过 webpac…

    Vue 2023年5月28日
    00
  • 详细聊聊Vue中的MVVM模式原理

    详细聊聊Vue中的MVVM模式原理 MVVM模式概述 MVVM模式是一种软件架构模式,它通过将应用程序分为三个部分来实现软件开发的分层和解耦,包括视图(View)、视图模型(ViewModel)和模型(Model)。其中,视图模型是视图和模型之间的中介层,用于将视图与模型之间的交互隔离开来,从而简化了视图和模型之间的耦合性。 在Vue中,MVVM模式的实现主…

    Vue 2023年5月27日
    00
  • 关于Vue中的计算属性和监听属性详解

    关于Vue中的计算属性和监听属性详解 Vue是一个非常流行的前端框架,在Vue的组件中,常常会有需要根据其他数据属性计算出新的属性值供模板渲染的情况。这时候就需要使用Vue提供的计算属性。此外,Vue还提供了监听属性,用于监听数据属性的变化。 计算属性 计算属性的本质就是一个函数,可以接受其他数据属性作为其参数,根据这些参数执行一定的计算逻辑,最终得出一个新…

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