vue.config.js 配置
vue.config.js 文件是 Vue CLI 项目中的全局配置文件,它允许你以 JavaScript 的形式来配置构建选项,而不是通过命令行参数或者 .vue-clirc 的 JSON 格式。
官方文档: https://cli.vuejs.org/zh/config/#全局-cli-配置
基础配置
-
publicPath
- 设置构建好的文件被部署后的公共路径。
module.exports = {publicPath: process.env.NODE_ENV === 'production' ? '/my-app/' : '/', };
-
outputDir
- 构建输出的目录,默认是
dist
。
module.exports = {outputDir: 'dist', };
- 构建输出的目录,默认是
-
assetsDir
- 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)。
module.exports = {assetsDir: "static", };
-
indexPath
- 指定生成的
index.html
的输出路径 (相对于 outputDir)。也可以是一个绝对路径。默认'index.html'
module.exports = {indexPath: "index.html", };
- 指定生成的
-
productionSourceMap
- 如果你不需要生产环境的
source map
,可以将其设置为false
以加速生产环境构建。
module.exports = {productionSourceMap: false, };
- 如果你不需要生产环境的
-
filenameHashing
- 默认情况下,生成的静态资源在它们的文件名中包含了
hash
以便更好的控制缓存。然而,这也要求index
的 HTML 是被 Vue CLI 自动生成的。如果你无法使用 Vue CLI 生成的 index HTML,你可以通过将这个选项设为false
来关闭文件名哈希。默认false
module.exports = {filenameHashing: false, };
- 默认情况下,生成的静态资源在它们的文件名中包含了
-
lintOnSave
- 是否开启
eslint
保存检测,有效值:ture
|false
|'error'
。 - 设置为
true
或'warning'
时,eslint-loader
会将lint
错误输出为编译警告。默认情况下,警告仅仅会被输出到命令行,且不会使得编译失败。 - 如果你希望让
lint
错误在开发时直接显示在浏览器中,你可以使用lintOnSave: 'default'
。这会强制eslint-loader
将lint
错误输出为编译错误,同时也意味着lint
错误将会导致编译失败。 - 设置为
error
将会使得eslint-loader
把lint
警告也输出为编译错误,这意味着lint
警告将会导致编译失败。 - 设置
false
关闭lint
警告
module.exports = {lintOnSave: false, };
- 是否开启
-
runtimeCompiler
- 是否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 组件中使用 template 选项了,但是这会让你的应用额外增加 10kb 左右。默认
false
module.exports = {runtimeCompiler: false, };
更多细节可查阅: Runtime + Compiler vs. Runtime only
- 是否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 组件中使用 template 选项了,但是这会让你的应用额外增加 10kb 左右。默认
-
transpileDependencies
- 默认情况下 babel-loader 会忽略所有 node_modules 中的文件。你可以启用本选项,以避免构建后的代码中出现未转译的第三方依赖。
不过,对所有的依赖都进行转译可能会降低构建速度。如果对构建性能有所顾虑,你可以只转译部分特定的依赖:给本选项传一个数组,列出需要转译的第三方包包名或正则表达式即可。
module.exports = {transpileDependencies: false, };
-
crossorigin
- 设置生成的 HTML 中
<link rel="stylesheet">
和<script>
标签的crossorigin
属性。
需要注意的是该选项仅影响由
html-webpack-plugin
在构建时注入的标签 - 直接写在模版 (public/index.html) 中的标签不受影响。crossorigin
: 如果配置了该属性,会让浏览器启用CORS检查(判断响应头中Access-Control-Allow-Origin是否与当前文档同源),如果检查不通过,则浏览器拒绝执行代码。stylesheet
: 导入样式表。link
标签使用了rel="stylesheet"
表示该文件是一份样式表文件。可以让 HTML 页面具有更好的外观和布局。module.exports = {crossorigin: false, };
- 设置生成的 HTML 中
-
integrity
-
在生成的 HTML 中的
<link rel="stylesheet">
和<script>
标签上启用 Subresource Integrity (SRI)。如果你构建后的文件是部署在 CDN 上的,启用该选项可以提供额外的安全性。 -
需要注意的是该选项仅影响由
html-webpack-plugin
在构建时注入的标签 - 直接写在模版(public/index.html)
中的标签不受影响。 -
当启用 SRI 时,
preload resource hints
会被禁用,因为 Chrome 的一个 bug 会导致文件被下载两次。
module.exports = {integrity: false, };
-
-
configureWebpack
- 如果这个值是一个对象,则会通过 w[]ebpack-merge](https://github.com/survivejs/webpack-merge) 合并到最终的配置中。
- 如果这个值是一个函数,则会接收被解析的配置作为参数。该函数既可以修改配置并不返回任何东西,也可以返回一个被克隆或合并过的配置版本。更多细节请查阅 配合 webpack > 简单的配置方式
module.exports = {configureWebpack: {}, // ()=> {} };
-
chainWebpack
- 是一个函数,会接收一个基于 webpack-chain 的 ChainableConfig 实例。允许对内部的 webpack 配置进行更细粒度的修改。更多细节可查阅:配合 webpack > 链式操作
module.exports = {chainWebpack: ()=> {} };
-
css.modules
- 从 v4 起已弃用,请使用
css.requireModuleExtension
。 在 v3 中,这个选项含义与css.requireModuleExtension
相反。
module.exports = {css: {modules: false,} };
- 从 v4 起已弃用,请使用
-
pages
- 定义多个入口页面。
module.exports = {// 配置多页面入口pages: {index: { // 默认入口// page 的入口entry: 'src/index/main.js',// 模板来源template: 'public/index.html',// 在 dist/index.html 的输出filename: 'index.html',// 当使用 title 选项时,// template 中的 <title> 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>title: 'Index Page',// 片段注入到页面的地点,// 可以是 (head / end / body / top / bottom)chunks: ['chunk-vendors', 'chunk-common', 'index']},otherpage: { // 新增的入口// page 的入口entry: 'src/otherpage/main.js',// 模板来源template: 'public/otherpage.html', // 或者 'public/otherpage/otherpage.html'// 在 dist/otherpage.html 的输出filename: 'otherpage.html',// 当使用 title 选项时,// template 中的 <title> 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>title: 'Other Page',// 片段注入到页面的地点,// 可以是 (head / end / body / top / bottom)chunks: ['chunk-vendors', 'chunk-common', 'otherpage']}} }
参考链接: vue.config.js 配置多入口文件
配置 devserve
module.exports = {devServer: {host: '0.0.0.0', // 让你的服务器可以被外部访问port: 8080, // 端口https: false, // 不使用 HTTP 提供服务hot: true, // 模块热替换open: true, // 打开浏览器client:{overlay: { // 当出现编译错误或警告时,在浏览器中显示全屏覆盖。warnings: true,errors: true},progress: true, // 在浏览器中以百分比形式打印编译进度。},headers: { // 设置请求头'X-Custom-Header': 'value'},compress: true, // 启用 gzip 压缩proxy: {'/api': { // 对 /api 的请求会将请求代理到 http://localhost:4000。target: 'http://localhost:4000',changeOrigin: true, // 使 Origin 请求头中的主机名变为目标 URL 的主机名secure: false, // 不验证 SSL 证书logLevel: 'warn', // 代理的日志级别ws: true, // 使用 WebSockets 作为服务器pathRewrite: { // 重写路径'^/api': ''},router: function(req) {if (req.url.startsWith('/api')) {return '/api';}return false;},context: ['/api'],bypass: function(req) {if (req.headers.accept.indexOf('html') !== -1) {return '/index.html';}}}},contentBase: './public', // 开发服务器提供的静态文件目录historyApiFallback: true, // 是否启用 HTML5 history API 的回退before: function(app, server) {// 在服务器启动之前执行的函数},after: function(app, server) {// 在服务器启动之后执行的函数},setupMiddlewares: true, // 设置中间件}
};
参考链接: vue.config.js 配置 devserve 配置
配置 configureWebpack 和 chainWebpack
configureWebpack
configureWebpack
允许你在 Vue CLI 项目中直接修改 Webpack 的配置。它可以通过一个对象或一个函数来实现。如果你使用的是一个函数,那么它会接收默认的 Webpack 配置作为参数,并且你应该返回一个修改过的配置对象。
配置示例:
const path = require("path");
const TerserPlugin = require("terser-webpack-plugin");
const WebpackObfuscator = require('webpack-obfuscator');function resolve(dir) {return path.join(__dirname, dir);
}
const name = '浏览器网页标题';
module.exports = {configureWebpack: (config) => {config.name = name,config.resolve = {...config.resolve,alias: {"@": resolve("src"), // 配置别名 @'vue': path.resolve(__dirname, './', 'node_modules', 'vue') // 去重vue包,多个vue包会导致element-ui 里的 table 组件不生效}},config.optimization = {...config.minimizer,minimizer: [new TerserPlugin({terserOptions: {compress: {drop_console: true, // 去除 console.logdrop_debugger: true, // 去除 debugger},},}),]}if (process.env.NODE_ENV === 'production') {config.plugins.push(new WebpackObfuscator({// 压缩代码compact: true,// 是否启用控制流扁平化(降低1.5倍的运行速度)controlFlowFlattening: false,// 随机的死代码块(增加了混淆代码的大小)deadCodeInjection: false,// 此选项几乎不可能使用开发者工具的控制台选项卡debugProtection: false,// 如果选中,则会在“控制台”选项卡上使用间隔强制调试模式,从而更难使用“开发人员工具”的其他功能。debugProtectionInterval: false,// 通过用空函数替换它们来禁用console.log,console.info,console.error和console.warn。这使得调试器的使用更加困难。disableConsoleOutput: true,// 标识符的混淆方式 hexadecimal(十六进制) mangled(短标识符)identifierNamesGenerator: 'hexadecimal',log: false,// 是否启用全局变量和函数名称的混淆renameGlobals: false,// 通过固定和随机(在代码混淆时生成)的位置移动数组。这使得将删除的字符串的顺序与其原始位置相匹配变得更加困难。如果原始源代码不小,建议使用此选项,因为辅助函数可以引起注意。rotateStringArray: true,// 混淆后的代码,不能使用代码美化,同时需要配置 cpmpat:true;selfDefending: true,// 删除字符串文字并将它们放在一个特殊的数组中stringArray: true,rotateUnicodeArray: true,// stringArrayEncoding: 'base64',stringArrayEncoding: ['base64'],stringArrayThreshold: 0.75,// 允许启用/禁用字符串转换为unicode转义序列。Unicode转义序列大大增加了代码大小,并且可以轻松地将字符串恢复为原始视图。建议仅对小型源代码启用此选项。unicodeEscapeSequence: false,// 允许启用/禁用字符串转换为unicode转义序列。Unicode转义序列大大增加了代码大小,并且可以轻松地将字符串恢复为原始视图。建议仅对小型源代码启用此选项。transformObjectKeys: true,}))}},
}
chainWebpack
chainWebpack
是 Vue CLI 提供的一种更强大的方式来修改 Webpack 的配置。与 configureWebpack
不同,chainWebpack
使用 Webpack Chain API,它允许你以一种声明式的方式来修改 Webpack 配置
配置示例:
const path = require("path");
module.exports = {chainWebpack: (config) => {// 修改 HTML 插件的选项config.plugin('html').tap(args => {args[0].title = 'My App';return args;});// 修改模块规则config.module.rule('images').test(/\.(png|jpe?g|gif|webp)(\?.*)?$/).use('url-loader').loader('url-loader').options({limit: 10000,name: 'img/[name].[hash:7].[ext]'});// 去除 debuggerconfig.when(process.env.NODE_ENV === 'production', config => {config.optimization.minimize(true);config.optimization.minimizer('terser').tap(args => {args[0].terserOptions.compress.drop_debugger = true;return args;});});// 添加别名config.resolve.alias.set('@components', resolve('src/components')).set('@assets', resolve('src/assets'));// 添加额外的插件config.plugin('define').tap(args => {args[0]['process.env'].VUE_APP_VERSION = JSON.stringify(process.env.VUE_APP_VERSION || '');return args;});// 修改输出选项config.output.filename('[name].[contenthash].js');},
};function resolve(dir) {return path.join(__dirname, dir);
}
参考链接: vue.config.js 配置configureWebpack 和 chainWebpack 以及一些常用配置
相关文章:
vue.config.js 配置
vue.config.js 文件是 Vue CLI 项目中的全局配置文件,它允许你以 JavaScript 的形式来配置构建选项,而不是通过命令行参数或者 .vue-clirc 的 JSON 格式。 官方文档: https://cli.vuejs.org/zh/config/#全局-cli-配置 基础配置 publicPath 设置构建好的…...

C ++ 也可以搭建Web?高性能的 C++ Web 开发框架 CPPCMS + MySQL 实现快速入门案例
什么是CPPCMS? CppCMS 是一个高性能的 C Web 开发框架,专为构建快速、动态的网页应用而设计,特别适合高并发和低延迟的场景。其设计理念类似于 Python 的 Django 或 Ruby on Rails,但针对 C 提供了更细粒度的控制和更高效的性能。…...

Taos 常用命令工作笔记(二)
最近测试创建一个涛思的数据库和一堆表进行测试,通过json配置文件配置字段的类型、名称等,程序通过解析json文件的配置,动态创建数据库的表。 其中表字段为驼峰结构的规则命名,创建表也是成功的,插入的测试数据也是成功…...

idea安装二进制文本阅读插件
引言 在软件开发过程中,有时需要查看二进制文件的内容以调试或分析问题。虽然有许多专用工具可以处理这类任务,但直接在 IDE 内集成这些功能无疑更加方便高效。本文将介绍如何在 IntelliJ IDEA 2023中安装和配置一个名为 BinEd的插件,以及如…...
MySQL 常用 SQL 语句大全
1. 基本查询 查询所有记录和字段 SELECT * FROM table_name; 查询特定字段 SELECT column1, column2 FROM table_name; 查询并限制结果 SELECT column1, column2 FROM table_name LIMIT 10; 条件查询 SELECT column1, column2 FROM table_name WHERE condition; 模糊匹…...

[Spring] Spring事务与事务的传播
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
Java 网络编程练习
InternetExercise1 package InternetExercise20240815;public class InternetExercise1 {public static void main(String[] args) {// 网络编程// 在网络通信协议下,不同计算机上面运行的程序,可以实现不同计算机上的数据传输// 网络编程三要素// 1.IP…...

中国科技统计年鉴,数据覆盖1991-2022年多年份
基本信息. 数据名称: 中国科技统计年鉴 数据格式: excel 数据时间: 1991-2022年 数据几何类型: xlsx 数据坐标系: WGS84 数据来源:国家统计局 数据预览: 数据可视化....
大模型的训练过程
大模型的训练是一个复杂的过程,涉及多个步骤和技术。下面我将概述大模型训练的主要流程,包括预训练、微调等关键阶段,并解释一些常见的技术和策略。 1. 数据准备 数据收集:收集大量多样化的数据,包括文本、图像、音频…...

4款ai在线改写工具,帮你轻松一键智能改写文章
在当今数字化内容创作的浪潮中,ai技术的应用为我们带来了极大的便利,尤其是在文章改写方面。以下将为大家详细分享四款出色的ai在线改写工具,从而帮助大家提升创作效率和质量。 ai在线改写工具一:智媒ai伪原创工具 它是一款备受好…...
Maven Mirror - 仓库镜像的介绍和配置
Maven Mirror(Maven镜像)是Maven构建工具中用于优化依赖下载速度和提高构建效率的一种机制。 在使用 Maven 构建应用程序时,Maven 默认会从 Maven 官方的中央仓库中下载依赖包。但是,在该仓库受到网络限制或访问速度过慢等问题时&…...

DevEcoStudio对Gitee进行变基与合并
当尝试将本地分支的更改推送到远程仓库,但是远程仓库中的该分支已经有了您本地分支中没有的提交时,会出现这个提示。 具体来说,这个提示意味着: 推送被拒绝:不能直接将更改推送到远程仓库,因为远程仓库中…...
2024 NVIDIA Summer Camp Day1:构建RAG多模态AI Agent
下载材料和课件等 课程相关资料下载链接: https://pan.baidu.com/s/15Y-gmsfeYCgKF-M3TJZVgg?pwdfafe 提取码: fafe 1.课件 链接:https://pan.baidu.com/s/15JTy9CqnesXSlPiwwrUmjA?pwd1111 提取码:1111 2.phi3量化大模型 链接:http…...
微服务之间的通信?
微服务之间的通信是微服务架构中的关键部分,它决定了服务之间如何进行数据交换和协同工作。微服务架构通过将大型应用拆分成多个小型、独立的服务,每个服务专注于完成特定的业务功能,从而提高了系统的可伸缩性、可维护性和可靠性。以下是微服…...
Elasticsearch 聚合概览及示例
Elasticsearch 是一个强大的搜索引擎,除了提供搜索功能外,它还内置了丰富的聚合功能,允许用户对数据进行统计、分析和运算。聚合可以帮助我们理解数据的分布和统计特性,是数据探索和报告的重要工具。本文将介绍 Elasticsearch 中的…...

【抓包】- Fiddler抓包教程,使用Fiddle抓取B站视频;ffmpeg的使用方法
一、预准备:过滤器设置 打开fiddler后,清空内容,然后播放视频。 找到与B站视频资源相关的回应,而后在“原始(raw)”标签中查看它的host信息。 发现B站视频资源的服务器DNS地址为【*bilivideo.cn】、【*bi…...
Linux网络配置和维护命令(三)
文章目录 网络接口配置-network-scripts文件远程复制文件-scp定义主机名与IP地址的关系-hosts文件登录远程主机-sshIP/主机名配置DNS域名解析服务器-resolv.conf文件 本篇讲解:网络接口配置-network-scripts文件、远程复制文件-scp、定义主机、名与IP地址的关系-hos…...
代码随想录算法训练营第二天 |209.长度最小子数组; 59.螺旋矩阵|| ; 前缀和
今日任务 209.长度最小子数组; 59.螺旋矩阵|| 58.区间和 44.开发商购买土地 209.长度最小的子数组 题目建议: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。 拓展题目可以先不做。 题目链接…...
Go语言基础--数据类型(整型、字符型)
转义字符 常用的转义字符有如下: 1)\t : 表示一个制表符,通常使用它可以排版。 2)\n:换行符 3)\\:一个\ 4) \":一个" 5)\r:一个回车 数据类型概述 在 Go 编程语言中,数据类型用于声明函数和变量…...

SpringBoot配置--Profile
目录 使用profile 的原因? proflie 的配置方式 多profile文件方式 profile 激活方式 1 配置文件 2 命令行参数 小结 使用profile 的原因? 用来完成不同环境下,配置动态切换功能的(具体什么意思呢?假设你在A电脑…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...