Vue.js 项目中 vue.config.js 常用配置项解析
Vue.js 项目中 vue.config.js 常用配置项解析
摘要
在 Vue CLI 创建的项目中,vue.config.js
是核心配置文件,用于定制化构建、开发和部署流程。本文详细解析了该文件的常用配置项,包括基础路径、开发服务器、Webpack 配置、CSS 预处理、插件选项及环境变量管理,并结合代码示例和表格说明,帮助开发者高效管理项目配置,提升开发体验。
关键词:Vue.js;vue.config.js;配置项;Webpack;开发服务器
一、引言
Vue CLI 是 Vue.js 官方提供的脚手架工具,它简化了 Vue.js 项目的搭建和开发流程。在 Vue CLI 创建的项目中,vue.config.js
是一个可选的配置文件,用于对 Vue CLI 项目进行自定义配置。通过该文件,开发者可以修改 Webpack 配置、配置开发服务器、设置静态资源路径、集成第三方插件等,以满足项目的特定需求。本文将详细介绍 vue.config.js
中常用的配置项,帮助开发者更好地理解和使用该文件。
二、基础配置项
(一)publicPath
- 作用:设置应用的基础路径,即项目中静态资源的引用路径。它相当于 Webpack 中的
output.publicPath
配置。 - 适用场景:当应用部署在子路径下(如
example.com/myapp/
)或通过 CDN 提供静态资源时,需要设置该路径。 - 示例代码:
module.exports = {publicPath: process.env.NODE_ENV === 'production' ? '/myapp/' : '/'
};
(二)outputDir
- 作用:指定构建输出目录,默认是
dist
。 - 适用场景:当需要将构建文件输出到不同的目录中(如 CI/CD 流程或特定的文件结构需求)时,可以修改该配置。
- 示例代码:
module.exports = {outputDir: 'build'
};
(三)assetsDir
- 作用:设置静态资源(如图片、字体、CSS)的子目录。
- 适用场景:当需要对静态资源进行分类管理时,可以使用该配置。
- 示例代码:
module.exports = {assetsDir: 'assets'
};
(四)lintOnSave
- 作用:决定在保存时是否启用 ESLint 检查。
- 适用场景:在开发过程中,可以通过该配置控制代码检查的开启和关闭。
- 选项说明:
true
:启用 ESLint 检查。false
:禁用 ESLint 检查。'error'
:只有在 ESLint 报错时才中断构建。
- 示例代码:
module.exports = {lintOnSave: true
};
(五)常用配置项表格总结
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
publicPath | String | ‘/’ | 应用的基础路径 |
outputDir | String | ‘dist’ | 构建输出目录 |
assetsDir | String | ‘’ | 静态资源的子目录 |
lintOnSave | Boolean/String | true | 是否启用 ESLint 检查 |
三、开发服务器配置项
(一)devServer
- 作用:修改 Webpack DevServer 的设置,包括端口、热重载、代理等。
- 常用配置项:
port
:开发服务器的端口。open
:启动后是否自动打开浏览器。hot
:启用热模块替换(HMR)。proxy
:配置代理,用于解决开发环境中的跨域问题。
- 示例代码:
module.exports = {devServer: {port: 8080,open: true,hot: true,proxy: {'/api': {target: 'http://localhost:5000',changeOrigin: true,pathRewrite: { '^/api': '' }}}}
};
(二)开发服务器配置项表格总结
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
port | Number | 8080 | 开发服务器的端口 |
open | Boolean | false | 启动后是否自动打开浏览器 |
hot | Boolean | true | 是否启用热模块替换 |
proxy | Object | {} | 代理配置,用于解决跨域问题 |
四、Webpack 配置项
(一)configureWebpack
- 作用:直接修改 Webpack 的配置,允许添加插件、修改模块解析等。
- 适用场景:当需要对 Webpack 进行个性化修改时,可以使用该配置。
- 示例代码:
module.exports = {configureWebpack: {plugins: [// 添加插件],resolve: {alias: {'@': '/src' // 配置路径别名}}}
};
(二)chainWebpack
- 作用:使用
webpack-chain
提供的链式 API,更细粒度地修改 Webpack 配置。 - 适用场景:当需要对 Webpack 配置进行复杂的修改时,可以使用该配置。
- 示例代码:
module.exports = {chainWebpack: config => {config.entry('app').add('./src/main.js');config.plugin('html').tap(args => {args[0].title = 'My Vue App';return args;});}
};
(三)Webpack 配置项表格总结
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
configureWebpack | Object/Function | {} | 直接修改 Webpack 配置 |
chainWebpack | Function | - | 使用链式 API 修改 Webpack 配置 |
五、CSS 配置项
(一)css
- 作用:控制 CSS 相关的构建行为,包括 CSS 的模块化、是否提取 CSS 文件等。
- 常用配置项:
extract
:在生产环境中将 CSS 提取到单独的文件。sourceMap
:是否生成 CSS 源映射文件。loaderOptions
:配置各类 CSS 预处理器(如 SASS、LESS)的选项。
- 示例代码:
module.exports = {css: {extract: true,sourceMap: false,loaderOptions: {sass: {prependData: `@import "~@/styles/variables.scss";`}}}
};
(二)CSS 配置项表格总结
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
extract | Boolean | true | 是否提取 CSS 到单独文件 |
sourceMap | Boolean | false | 是否生成 CSS 源映射文件 |
loaderOptions | Object | {} | 配置 CSS 预处理器的选项 |
六、插件配置项
(一)pluginOptions
- 作用:为第三方插件配置选项,Vue CLI 提供了很多插件,这些插件通常可以通过
pluginOptions
进行个性化配置。 - 适用场景:当使用第三方插件时,需要为其提供额外的配置选项。
- 示例代码:
module.exports = {pluginOptions: {'my-plugin': {someOption: true}}
};
(二)插件配置项表格总结
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
pluginOptions | Object | {} | 为第三方插件配置选项 |
七、环境变量配置项
(一)环境变量
- 作用:根据不同的环境(开发、生产等)配置不同的设置。
- 适用场景:当项目需要在不同的环境中运行时,可以通过环境变量来配置不同的设置。
- 示例代码:
// .env.development
VUE_APP_TITLE = 'Development App'// .env.production
VUE_APP_TITLE = 'Production App'// vue.config.js
module.exports = {configureWebpack: config => {config.plugins.push(new webpack.DefinePlugin({'process.env.VUE_APP_TITLE': JSON.stringify(process.env.VUE_APP_TITLE)}));}
};
八、结论
vue.config.js
是 Vue CLI 项目中非常重要的配置文件,通过合理配置可以极大地提升项目的开发体验和维护效率。本文详细介绍了 vue.config.js
中常用的配置项,包括基础配置、开发服务器配置、Webpack 配置、CSS 配置、插件配置和环境变量配置等。开发者可以根据项目的实际需求,选择合适的配置项进行配置,以满足项目的特定需求。同时,建议开发者对 vue.config.js
进行版本控制,记录每次修改的原因和内容,便于回溯和协作。
相关文章:
Vue.js 项目中 vue.config.js 常用配置项解析
Vue.js 项目中 vue.config.js 常用配置项解析 摘要 在 Vue CLI 创建的项目中,vue.config.js 是核心配置文件,用于定制化构建、开发和部署流程。本文详细解析了该文件的常用配置项,包括基础路径、开发服务器、Webpack 配置、CSS 预处理、插件…...
Javascript逗号操作符
这段代码是一个使用了生成器函数(Generator Function)的无限循环(for (;;)),内部通过switch语句控制流程。代码中有很多逗号分隔的语句,这其实是利用了JavaScript的逗号操作符(comma operator&a…...
windows系统安装驱动、cuda和cudnn
一、首先在自己的电脑里安装了nvidia的独立显卡 显卡的查找方式: CtrlShiftEsc打开任务管理器,点击性能,点击GPU 0查看显卡型号,如下图所示: 只要电脑中有nvidia的独立显卡,就可以暗转显卡驱动、cuda和cu…...
常见的 14 个 HTTP 状态码详解
文章目录 一、2xx 成功1、200 OK2、204 No Content3、206 Partial Content 二、3xx 重定向1、301 Moved Permanently2、302 Found3、303 See Other注意4、Not Modified5、307 Temporary Redirect 三、4xx 客户端错误1、400 Bad Request2、401 Unauthorized3、403 Forbidden4、4…...
DAY 44 leetcode 28--字符串.实现strStr()
题号28 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 我的解法 双指针,slow定位&…...
Nginx用途以及好处:
反向代理: 1、提高访问速度 2、进行负载均衡:所谓负载均衡,就是把大量的请求按照我们指定的的方式均衡的分配给集群中的每台服务器(不使用nginx前端会固定的访问某一台服务器 加入nginx分配到多台服务器) 3、保证后端的安全 服务器一般部署在…...
打造可控可测的星座网络:IPLOOK低轨通信仿真平台搭建实践
在低轨卫星通信迅猛发展的趋势下,空天地一体化网络正逐步成为新一代信息基础设施的核心组成。作为移动核心网领域的技术引领者,IPLOOK依托在5G核心网、NTN(非地面网络)和卫星通信仿真方面的技术优势,率先构建了自主可控…...
火车头采集动态加载Ajax数据(无分页瀑布流网站)
为了先填充好数据在上线,在本地搭建了一个网站,并用火车头采集数据填充到里面。 开始很上手,因为找的网站的分类中是有分页的。很快捷的找到页面标识。 但是问题来了,如今很多网站都是采用的Ajax加载数据,根本没有分…...
笔记:代码随想录算法训练营day67:Floyd 算法精讲、A * 算法精讲 (A star算法) 严重超时完结,不过,撒花
学习资料:代码随想录 Floyd 算法精讲 卡码网:97. 小明逛公园 首先明确floyd算法解决的是多源最短路径问题,对边的权的正负值没有要求,而且是动态规划的思想 五部曲: 定义:grid[i][j][k]表示从i出发到j…...
Electron Forge【实战】桌面应用 —— AI聊天(中)
系列教程 Electron Forge【实战】桌面应用 —— AI聊天(上) 添加本地存储 Dexie.js 用 IndexedDB 实现,Dexie.js 库简化操作 npm i dexie新建文件 src\db.ts import Dexie, { type EntityTable } from "dexie";import { Provide…...
国达陶瓷重磅推出陶瓷罗马柱外墙整装尖端新产品“冠岩臻石”
近日,记者在佛山国达建材有限公司(以下简称国达陶瓷)董事长杨建平处了解到,该公司重磅推出的“冠岩臻石”新产品,是属于陶瓷罗马柱外墙整装产品中的尖端产品。新产品自面市之后,深受高端用户的青睐与认可。…...
Java 系统设计:如何应对高并发场景?
Java 系统设计:如何应对高并发场景? 在现代互联网应用中,高并发场景已经成为系统设计中不可避免的挑战。无论是电商秒杀、抢票系统,还是实时数据处理平台,高并发场景都对系统的性能、稳定性和扩展性提出了极高的要求。…...
VR 全景多维赋能,众趣科技助力零售业开启购物新时代
说到商铺这个词,最早形成于春秋战国时期,当时还未形成固定位置的商铺,部分有远见的商人会在人流量较大的区域摆设摊位,促进了城市的繁荣。到了唐宋时期,商铺进一步发展,并随着商品经济的发展和城市人…...
五大生产模式(MTS、MTO、ATO、ETO、CTO)的差异
五大生产模式(MTS、MTO、ATO、ETO、CTO)差异 一、 库存控制二、 订货提前期三、交期与库存分析四、五大生产模式的产品生命周期 一、 库存控制 ETO 模式侧重于原材料库存管理,以应对定制设计所需的物料供应。 MTO 模式重点是原材料库存&…...
clickhosue中json字符串转为表
将json字符串直接通过sql转为表,这里就可以直接把接口来的数据,直接通过clickhouse进行关联查询了。 -- 将json字符串直接通过sql转为表,这里就可以直接把接口来的数据,直接通过clickhouse进行关联查询了。 WITH -- 解析 JSON 数据为字符串json_data AS (SELECT [{"c…...
二叉树的基本功能实现
一.二叉树的结构及实现 1.二叉树的结构 在之前的章节中已经介绍过,二叉树是一种特殊的树,其最大度为2,及最多有左,右两个孩子,结构图如下 在此之前已经讨论过一些特殊的二叉树,这里讨论一般的二叉树 2.…...
VSCode 降低适用版本并且关闭自动更新
VSCode 降低适用版本并且关闭自动更新 相关链接问题描述解决方法下载安装包关闭自动更新 参考链接 相关链接 VSCode 官网 问题描述 无法正常使用vscode-remote插件远程连接Centos7等一些老版本Linux云服务器(如Centos7) 从2024年1月,vsco…...
OpenHarmony - 小型系统内核(LiteOS-A)(二)
OpenHarmony - 小型系统内核(LiteOS-A)(二) 三、基础内核 3.1、中断及异常处理 基本概念 中断是指出现需要时,CPU暂停执行当前程序,转而执行新程序的过程。即在程序运行过程中,出现了一个必须…...
2025第十六届蓝桥杯PythonA组部分题解
试题A:数字求和 题目描述 给定两个整数a和b,输出它们的和。 输入格式:两个整数,空格分隔 输出格式:一个整数 输入输出样例 输入: 5 8输出: 13解题思路 直接使用加法运算符计算两数之和。…...
苍穹外卖day04
Spring Task实现定时处理订单状态 作用:不需要输入提示信号,便可定时自动执行程序 使用步骤 1、启动类上加上注解(EnableScheduling)开启定时任务调度 2、专门创建一个包来管理执行定时任务的类,该类需要交给IOC容…...
曲线与曲面的绘制
一、学习目标 (1)掌握常用规则参数曲线与曲面的编程绘制方法。 (2)掌握自由曲线与曲面的编程绘制方法。 (3)了解自由曲面的拼接编程方法。 二、学习内容 (1)编程绘一个规则参数…...
Python Cookbook-6.2 定义常量
任务 你需要定义一些模块级别的变量(比如命名的常量),而且客户代码无法将其重新绑定。 解决方案 你可以把任何对象当做模块一样安装。将下列代码存为一个模块const.py,并放入你的Python的sys.path 指定的目录中: class _const(object):class ConstEr…...
【信息系统项目管理师】高分论文:论信息系统项目的范围管理(信息化系统综合管理平台)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划范围管理2、收集需求3、定义范围4、创建WBS5、确认范围6、控制范围论文 2017年6月,我作为项目经理参与了 XX市经济和信息化委员会系统综合管理平台建设项目,该项目投资共150万元人民币,建设工期…...
用Webpack 基础配置快速搭建项目开发环境
Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具,但是Webpack有大量的配置项,对新手不太友好,但是我们可以根据webpack-cli的init命令根据项目需求快速生成webpack的配置文件,本文将手把手教你如何用 Webpack 和 npm 快…...
【LLM Agent】SystemMessage 和 HumanMessage
文章目录 SystemMessage 和 HumanMessageSystemMessage(系统消息)HumanMessage(用户消息)结合使用高级设置能否将用户消息(HumanMessage)写在系统消息(SystemMessage) SystemMessage…...
机器学习核心知识:从基础概念到关键算法
摘要 本文深度剖析机器学习知识体系,从基本概念、学习方式,到分类算法、逻辑回归等关键内容均有涉及。详细阐述各知识点原理与应用场景,并对比多种算法的优劣。 关键词:机器学习;监督学习;分类算法&#x…...
信奥赛之c++基础(for与if的嵌套使用)
🍭 糖果工厂大闯关——for与if的嵌套魔法 🚚 第一章:快递站的故事(情景引入) 📦 快递分拣员小明 快递站每天要处理100个包裹,小明发现: 有些包裹要立即派送(红色标签)有些包裹可以暂存仓库(蓝色标签)for (int 包裹号=1; 包裹号<=100; 包裹号++) {if (包裹颜…...
凡泰极客亮相QCon2025鸿蒙专场,解析FinClip“技术+生态”双引擎
2025年4月10日,备受瞩目的QCon开发者技术峰会盛大举行,本次活动开设鸿蒙专场以“HarmonyOS NEXT 创新特性与行业实践”为主题,汇聚了众多鸿蒙生态的领军人物与技术专家,共同探讨鸿蒙操作系统的技术创新与行业应用。 凡泰极客CTO徐…...
day25 学习笔记
文章目录 前言一、图像翻转二、图像的仿射变换1.仿射变换的原理2.仿射变换函数3.图像旋转4.图像平移5.图像缩放6.图像剪切 三、插值方法1.最近领插值2.双线性插值法3.双三次插值4.代码展示 前言 通过今天的学习,我掌握了OpenCV中有关图像翻转,图像仿射变…...
Docker构建go-web应用
https://www.liwenzhou.com/posts/Go/deploy-in-docker/#c-0-4-0 本文介绍了如何使用Docker以及Docker Compose部署我们的 Go Web 程序。 Docker部署示例 准备代码 这里我先用一段使用net/http库编写的简单代码为例讲解如何使用Docker进行部署,后面再讲解稍微复杂…...
人工智能100问☞第4问:人工智能与机器学习、深度学习的区别?
目录 一、通俗解释 二、专业解析 三、权威参考 人工智能(AI)是目标:让机器具备智能(如建造一辆车);机器学习(ML)是引擎:提供动力方法(如燃油发动机);深度学习(DL)是涡轮增压:提升引擎性能(如处理复杂路况)。三者协同驱动技术发展,如同车辆需要…...
电子电器架构 --- 智能座舱的定义
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...
JavaScript Map 对象深度解剖
JavaScript Map 对象深度解剖 一、Map 核心特性 1.1 什么是 Map? 通俗解释: Map 就像是一个“超级版对象”,它用更灵活的方式存储键值对。举个生活例子: 普通对象(Object)像一本传统电话簿,…...
zlm启用webrtc交叉编译指南
zlm启用webrtc交叉编译指南 一、交叉编译openssl 下载openssl-1.1.1k版本,其他版本可能会有问题 $ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz $ tar -xvzf openssl-1.1.1k.tar.gz $ cd openssl-1.1.1k $ ./config no-asm shared --openssld…...
树莓派超全系列教程文档--(23)内核参数
内核参数 内核命令行 (cmdline.txt)命令行选项标准条目设置KMS显示模式 其他条目 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 内核命令行 (cmdline.txt) Linux 内核在启动过程中接受一系列命令行参数。在 Raspberry Pi 上,该命令…...
机器学习 从入门到精通 day_05
1. 线性回归 前面介绍了很多分类算法,分类的目标变量是标称型数据,回归是对连续型的数据做出预测。 标称型数据(Nominal Data)是统计学和数据分析中的一种数据类型,它用于分类或标记不同的类别或组别,数据点之间并没有…...
读者、写者问题优化
#include <stdio.h> #include <time.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> #include <semaphore.h> #define NUM_READERS 5 #define NUM_WRITERS 5 // 定义信号量和全局变量 sem_t sdata, srcount; int rea…...
DeepSeek-V3与DeepSeek-R1架构原理及应用对比分析
DeepSeek-V3与DeepSeek-R1架构原理及应用对比分析 DeepSeek作为中国人工智能领域的重要参与者,推出了V3和R1两款大模型,它们在架构设计和应用场景上各有侧重。本文将深入分析这两款模型在架构原理上的核心差异,并探讨它们如何分别应对复杂推…...
OpenCV图像增强实战教程:从理论到代码实现
OpenCV图像增强实战教程:从理论到代码实现 🔥🚀 📚 想要掌握图像增强的核心技术?本文手把手教你使用OpenCV实现多种图像增强技术,从基础的线性变换到高级的频域滤波,全方位提升你的图像处理能力…...
一文介绍关于多模态的基础知识 !!
文章目录 前言 一、机器学习 二、深度学习 三、应用领域 前言 多模态不再局限于单一类型的数据处理,它融合图像、文本和音频等多种信息源。其基础知识涵盖机器学习、深度学习及其在多模态领域的应用。机器学习部分包含分类、回归、聚类和降维等四类算法;…...
mysql DQL
一.基本查询 1.查询多个字段 2.查看所有字段 3.设置别名 4.去除重复记录 二.条件查询 1.大于小于等于 2.查询 身份证为空的 没有所以没有记录 3.在15到20这个区间范围内 4.or/in 或者 4.like 匹配 (_匹配单个字符 %匹配多个字符) 查询员工信…...
Android Studio 项目文件夹结构详解
文章目录 一、项目视图概览1. Android 视图(简化视图)2. Project 视图(完整物理结构) 二、核心目录详解1. 项目根目录文件2. app 模块目录(主模块)2.1 manifests/2.2 java/2.3 res/ - 资源目录2.4 assets/2…...
Linux系统常见磁盘扩容操作(Common Disk Expansion Operations in Linux Systems)
Linux系统常见磁盘扩容操作 目录说明 一、准备工作:获取目标磁盘信息 (1)确认分区表格式和文件系统 二、扩容已有MBR分区 (1)分区后扩容 ext为例 xfs为例 三、扩容已有GPT分区 (1)分区…...
【UE5 C++】“ProceduralMeshComponent”的使用记录
效果 如下所示,通过“ProceduralMeshComponent”创建了一个自定义形状的Mesh,并且该Mesh包含碰撞信息,然后2s后更新Mesh形状。 步骤 1. 在“xxx.Build.cs”中引入“ProceduralMeshComponent”模块 2. 新建一个Actor类,这里命名为…...
源代码加密之零日攻击
# SDC沙盒:有效防御零日攻击的多层防护体系 在当今复杂多变的网络安全环境中,零日攻击已成为企业面临的重大威胁之一。零日攻击利用尚未被公众发现或尚未被软件供应商修复的漏洞进行攻击,具有极高的隐蔽性和破坏性。SDC沙盒作为一种先进的数…...
Vue2 集成VTK.js 并显示3D影像
Vue2 集成VTK.js 并显示3D影像(核心代码) 作者:coder_fang vtk.js目前官网只有vue3的示例,对于已有vue2系统的集成,需要使用指定版本的vtk,itk等库并修改部分配置即可。 需要的主要库和版本: vue:2.3.4; vtk-v32.9.0.min.js,itk-wasm.min.…...
本地git操作
一、初始化与基础操作 1. 初始化仓库 git init # 当前目录新建仓库 git init <目录名> # 指定目录初始化 2. 查看状态 git status # 显示工作区和暂存区状态 git status -s # 简洁版状…...
AI的出现,是否能替代IT从业者?
*AI在IT领域中的应用已成趋势,IT 从业者们站在这风暴之眼,面临着一个尖锐问题:AI 是否会成为 “职业终结者”?有人担忧 AI 将取代 IT 行业的大部分工作,也有人坚信 IT 从业者的专业技能与创新思维无可替代。那么&#…...
3、组件:魔法傀儡的诞生——React 19 组件化开发全解析
一、开篇:魔法傀儡的觉醒 "每个React组件都像一具魔法傀儡,"邓布利多校长挥动魔杖,空中浮现出闪烁的代码字符,"它们能自主思考、协同工作,甚至能跨越时空(服务器与客户端)执行任…...
Vue 解决 Error: please transfer a valid prop path to form item!
在 Vue.js 中使用表单验证库(如 VeeValidate 或 Element UI 的表单组件时),遇到错误信息 "please transfer a valid prop path to form item!" 通常指的是在表单项的属性绑定中,路径(prop path)不…...