Vue-cli-service build –mode详解

一、模式概述

Vue-cli-service是一个基于webpack的项目脚手架,用于快速搭建Vue项目。在Vue-cli-service的build命令中,我们可以通过指定mode参数来定义不同的模式,它可以帮助我们在不同的环境下对项目进行优化或调试。

Vue-cli-service默认提供了三种模式:development、production和test,开发者还可以根据自己的需要添加新的模式。

二、三种默认模式

1. development模式

在development模式下,Vue-cli-service会对代码进行热重载、创建source map、输出未压缩的代码等操作,以便我们进行调试和开发工作。该模式的配置文件为webpack.dev.conf.js。

2. production模式

在production模式下,Vue-cli-service会对项目进行打包压缩、代码分割、提取公共模块等操作,以便我们在生产环境中运行项目。该模式的配置文件为webpack.prod.conf.js。

3. test模式

在test模式下,Vue-cli-service会对项目进行测试并生成测试覆盖报告。该模式的配置文件为webpack.prod.conf.js。

三、添加自定义模式

除了默认提供的三种模式之外,我们也可以通过添加自定义模式来为项目提供不同的构建方式。

module.exports = {
  configureWebpack: {
    mode: 'custom'
  }
}

在上面的代码中,我们在configureWebpack选项中添加了mode属性,并将其设置为’custom’。之后在build命令中我们可以通过–mode选项来指定自定义模式。

四、模式配置

除了mode参数外,我们还可以通过配置不同的选项对模式进行进一步的优化和调整。

1. development模式配置

在开发模式下,我们通常会需要设置source map、关闭Host check等选项。下面是一个示例:

module.exports = {
  configureWebpack: {
    devtool: 'source-map'
  },
  devServer: {
    disableHostCheck: true
  }
}

2. production模式配置

在生产模式下,我们通常会需要设置打包优化、CDN等选项。下面是一个示例:

module.exports = {
  configureWebpack: {
    optimization: {
      splitChunks: {
        chunks: 'all',
        minSize: 30000,
        minChunks: 1,
        maxAsyncRequests: 5,
        maxInitialRequests: 3,
        name: true,
        cacheGroups: {
          vendor: {
            test: /[\\/]node_modules[\\/]/,
            name(module) {
              const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]
              return `npm.${packageName.replace('@', '')}`
            }
          }
        }
      }
    }
  },
  chainWebpack: config => {
    config.plugin('html').tap(args => {
      args[0].cdn = {
        css: [
          'https://cdn.bootcdn.net/ajax/libs/element-ui/2.13.2/theme-chalk/index.min.css'
        ],
        js: [
          'https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.runtime.min.js',
          'https://cdn.bootcdn.net/ajax/libs/element-ui/2.13.2/index.min.js'
        ]
      }
      return args
    })
  }
}

3. test模式配置

在测试模式下,我们通常会需要设置测试框架、覆盖率等选项。下面是一个示例:

module.exports = {
  configureWebpack: {
    module: {
      rules: [
        {
          test: /\.js$/,
          use: ['babel-loader', 'istanbul-instrumenter-loader'],
          include: [path.resolve('src')],
          exclude: [/node_modules/, /tests/]
        }
      ]
    }
  }
}

五、运行build命令及参数说明

在运行build命令时,我们需要使用Vue-cli-service命令并添加–mode参数来指定模式。下面是一个示例:

vue-cli-service build --mode production

在这个例子中,我们使用了production模式进行打包,生成的文件位于dist文件夹下。

除了–mode参数外,Vue-cli-service也提供了其他一些有用的参数:

  • –modern:启用现代模式,生成两个版本的代码,针对新版浏览器和旧版浏览器进行优化。
  • –target:指定编译的目标环境,可以是web、node、electron-renderer等。
  • –report:生成构建报告,可以查看各个模块的大小、依赖关系等信息。
  • –watch:开启监听模式,当源文件发生变化时自动重新构建。
  • –color:开启控制台输出的颜色。

六、总结

Vue-cli-service提供了丰富的配置选项和模式,可以让我们在不同的环境下实现快速开发和优化,同时也可以通过添加自定义模式来满足不同的需求。在实际开发中,我们可以根据项目的特点和需求选择不同的模式和配置。

原创文章,作者:UXKXF,如若转载,请注明出处:https://www.506064.com/n/370693.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
UXKXFUXKXF
上一篇 2025-04-22 01:14
下一篇 2025-04-22 01:14

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27
  • Vue模拟按键按下

    本文将从以下几个方面对Vue模拟按键按下进行详细阐述: 一、Vue 模拟按键按下的场景 在前端开发中,我们常常需要模拟按键按下的场景,比如在表单中填写内容后,按下“回车键”提交表单…

    编程 2025-04-27
  • ThinkPHP6 + Vue.js: 不使用Fetch的数据请求方法

    本文将介绍如何在ThinkPHP6和Vue.js中进行数据请求,同时避免使用Fetch函数。 一、AJAX:XMLHttpRequest的基础使用 在进行数据请求时,最基础的方式就…

    编程 2025-04-27
  • 开发前端程序,Vue是否足够?

    Vue是一个轻量级,高效,渐进式的JavaScript框架,用于构建Web界面。开发人员可以使用Vue轻松完成前端编程,开发响应式应用程序。然而,当涉及到需要更大的生态系统,或利用…

    编程 2025-04-27
  • 如何在Vue中点击清除SetInterval

    在Vue中点击清除SetInterval是常见的需求之一。本文将介绍如何在Vue中进行这个操作。 一、使用setInterval和clearInterval 在Vue中,使用set…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25

发表回复

登录后才能评论