vue项目中vue.config.js中配置webpack详解

前言:

vue-cli3以前的版本中把webpack的配置都写在config文件中,可以vue-cli3以上的版本中没有了config目录,可以将配置webpack的文件写在vue.config.js文件里面。

vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载。你也可以使用 package.json 中的 vue 字段,但是注意这种写法需要你严格遵照 JSON 的格式来写。

一、vue.config.js中的基本配置

1、导出:

// vue.config.js/*** @type {import('@vue/cli-service').ProjectOptions}*/
module.exports = {// 选项...
}

或者也可以用帮手函数defineConfig

// vue.config.js
const { defineConfig } = require('@vue/cli-service')module.exports = defineConfig({// 选项
})

2、publicPath部署应用包的基本url

默认/,可以设置为相对路径./。

用法和 webpack 本身的 output.publicPath 一致,但是 Vue CLI 在一些其他地方也需要用到这个值,所以请始终使用 publicPath 而不要直接修改 webpack 的 output.publicPath

let developmentPath='./';//开发环境-npm run serve时引用文件路径
let productionPath='./';//生产环境-npm run build打包后引用文件路径
module.exports = {publicPath: process.env.NODE_ENV === 'production' ? productionPath: developmentPath, // 基本路径-引用文件的路
}

3、 outputDir 输出生产环境构建文件的目录

当运行 vue-cli-service build 时生成的生产环境构建文件的目录。

请始终使用 outputDir 而不要修改 webpack 的 output.path

outputDir: "dist/html",

4、assetsDir 打包后生成的静态资源目录

放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。

从生成的资源覆写 filename 或 chunkFilename 时,assetsDir 会被忽略。

assetsDir: 'static',

 5、indexPath

指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径。

6、lintOnSave

是否在保存的时候通过eslint-loader检查

如果你想要在生产构建时禁用 eslint-loader,你可以用如下配置:

// vue.config.js
module.exports = {lintOnSave: process.env.NODE_ENV !== 'production'
}

7、productionSourceMap

如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。默认是true

productionSourceMap: false,

8、 devServer

通过devServer.proxy 选项配置,可解决跨域问题

devServer: {index: '/index.html',   //默认打开文件open: true,             //自动打开浏览器host: 'localhost',      //默认打开域名port: 8080,             //默认打开端口号https: false,           //开启关闭https请求hotOnly: false,         //热更overlay: {warnings: false,errors: true,},proxy: {// 配置跨域'/api': {target: 'http://192.168.99.99:8080', //代理地址,这里设置的地址会代替axios中设置的baseURLchangeOrigin: true,// 如果接口跨域,需要进行这个参数配置pathRewrite: {                //pathRewrite方法重写url'^/api': '/',},// secure: false, // 如果要验证SSL证书 设置为true// ws: true, // 如果您想代理websocket},},// mock 使用需要打开// before: require('./mock/mock-server.js')},

 二、vue.config.js中配置webpack

1、configureWebpack

调整 webpack 配置最简单的方式就是在 vue.config.js 中的 configureWebpack 选项提供一个对象:

该对象将会被 webpack-merge 合并入最终的 webpack 配置。

configureWebpack: {// 以便在webpack的名称字段中提供应用程序的标题,以便//可以在index.html中访问它以注入正确的标题。name: name,resolve: {alias: {"@": resolve("src"),},},},

如果你需要基于环境有条件地配置行为,或者想要直接修改配置,那就换成一个函数 (该函数会在环境变量被设置之后懒执行)。该方法的第一个参数会收到已经解析好的配置。在函数内,你可以直接修改配置,或者返回一个将会被合并的对象:

  configureWebpack: config => {if (process.env.NODE_ENV === 'production') {// 为生产环境修改配置...} else {// 为开发环境修改配置...}}

2、chainWebpack链式操作 (高级)

Vue CLI 内部的 webpack 配置是通过 webpack-chain 维护的。这个库提供了一个 webpack 原始配置的上层抽象,使其可以定义具名的 loader 规则和具名插件,并有机会在后期进入这些规则并对它们的选项进行修改。

  chainWebpack(config) {// it can improve the speed of the first screen, it is recommended to turn on preloadconfig.plugin("preload").tap(() => [{rel: "preload",// to ignore runtime.js// https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],include: "initial",},]);// when there are many pages, it will cause too many meaningless requestsconfig.plugins.delete("prefetch");// set svg-sprite-loaderconfig.module.rule("svg").exclude.add(resolve("src/icons")).end();config.module.rule("icons").test(/\.svg$/).include.add(resolve("src/icons")).end().use("svg-sprite-loader").loader("svg-sprite-loader").options({symbolId: "icon-[name]",}).end();// set preserveWhitespaceconfig.module.rule("vue").use("vue-loader").loader("vue-loader").tap((options) => {options.compilerOptions.preserveWhitespace = true;return options;}).end();config.when(process.env.NODE_ENV == "development", (config) => {config.plugin("ScriptExtHtmlWebpackPlugin").after("html").use("script-ext-html-webpack-plugin", [{// `runtime` must same as runtimeChunk name. default is `runtime`inline: /runtime\..*\.js$/,},]).end();config.optimization.splitChunks({chunks: "all",cacheGroups: {libs: {name: "chunk-libs",test: /[\\/]node_modules[\\/]/,priority: 10,chunks: "initial", // only package third parties that are initially dependent},elementUI: {name: "chunk-elementUI", // split elementUI into a single packagepriority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or apptest: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm},commons: {name: "chunk-commons",test: resolve("src/components"), // can customize your rulesminChunks: 3, //  minimum common numberpriority: 5,reuseExistingChunk: true,},},});// https:// webpack.js.org/configuration/optimization/#optimizationruntimechunkconfig.optimization.runtimeChunk("single");});},
注意:

chainWebpack通过链式编程的形式,来修改默认的webpack配置
configureWebpack通过操作对象的形式,来修改默认的webpack配置
如果对一个loader或plugin修改的配置如果是一项的话推荐 chainWebpack、如果是多项的话用configureWebpack直接覆写

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/11255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hadoop yarm你知道吗?

一、概念 Hadoop YARN(Yet Another Resource Negotiator)是Hadoop 2.x版本中的一个重要组件,用于资源管理和作业调度。它是Hadoop的第二代资源管理器,取代了Hadoop 1.x版本中的MapReduce作业调度器。 通俗地理解它的作用有点像一…

如何通过外网访问内网服务器?

随着网络的普及和各行各业对互联网的应用需求增加,通过外网访问内网服务器的需求也越来越多。在传统的网络环境下,要实现外网访问内网服务器需要进行繁琐的端口映射设置,而且还会受到网络环境限制和数据安全问题的困扰。现在有了一种名为【天…

Springboot整合 Spring Cloud Alibaba Sentinel

1.Sentinel介绍 官方文档地址: https://sentinelguard.io/zh-cn/docs/introduction.html https://github.com/alibaba/Sentinel/wiki/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入…

定制聚四氟乙烯大圆桶50L

PTFE聚四氟乙烯圆桶是高性能化学实验器皿,适用于强酸强碱环境。具有化学稳定性、耐高温、良好密封、易清洗、环保安全等特点。 常规四氟桶-超大规格四氟桶均可定制,一体成型,保证密封,可长期保存高纯试剂。 产品特性 1.超纯实验…

Elastic 基于 RAG 的 AI 助手:利用 LLM 和私有 GitHub 问题分析应用程序问题

作者:来自 Elastic Bahubali Shetti 作为 SRE,分析应用程序比以往更加复杂。 你不仅必须确保应用程序以最佳状态运行以确保良好的客户体验,而且还必须了解某些情况下的内部工作原理以帮助排除故障。 分析基于生产的服务中的问题是一项团队运动…

python项目中exec路径处理

理解Python中的exec()函数及其参数 在Python编程中,exec()函数是一个强大的工具,它允许动态地执行存储在字符串或代码对象中的Python代码。然而,由于其能力强大,exec()的使用也需要谨慎,以避免潜在的安全风险。本文将…

C#:输出任意一个数的逆序数

任务描述 本关任务:从键盘输入一个整数,输出该数的逆序数。如369的逆序数是963,478的逆序数是874 编程要求 根据提示,在右侧编辑器补充代码,计算并输出一个数的逆序数。 测试说明 平台会对你编写的代码进行测试: 测…

回炉重造java----多线程

概念 注: main方法其实也是一个线程。在java中所以的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源。在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集(gc )线…

【Ubuntu】apt命令安装最新版本Nginx

目录 环境前言添加Nginx仓库步骤1、仓库公钥2、文本公钥转二进制GPG公钥(可选)3、添加apt软件源4、安装新版Nginx 参阅 环境 Ubuntu 22.04 前言 ubuntu官方apt软件仓库(或者叫软件源)的软件版本可能会比较旧,导致无…

AI算法-高数5-线性代数1-基本概念、向量

线性代数:主要研究1、张量>CV计算机视觉 2、研究张量的线性关系。 深度学习的表现之所以能够超过传统的机器学习算法离不开神经网络,然而神经网络最基本的数据结构就是向量和矩阵,神经网络的输入是向量,然后通过每个矩阵对向量…

使用 Flask Blueprint 实现模块化 Web 应用

文章目录 1. 什么是 Flask Blueprint?2. 为什么要使用 Flask Blueprint?3. 如何使用 Flask Blueprint?4. 在 Blueprint 之间进行通信5. 结合 Flask 插件系统进行功能拓展结语 当构建大型 Flask Web 应用时,保持代码的组织结构清晰…

遨游 JavaScript 对象星际:探索面向对象编程的深邃世界

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 💯面向对象编程🔗1 什么是对象🔗2 什么是…

免费SSL证书申请安装通用指南

JoySSL官网 注册码230918 关于SSL证书的申请与安装,以下是一个概括性的技术性指南,适合那些希望详细了解该过程的技术人员或网站管理员。请注意,具体步骤可能会根据证书颁发机构(CA)和服务提供商的不同而有所变化。 一、选择SSL证书类型与颁…

Lua 基础 01 入门

Lua 基础相关知识 第一期 注释 -- 单行注释--[[多行注释 --]]-- 多加一个横杠符号就能重新启用注释内的代码 ---[[print("Lua") --]]数据类型 Lua 是动态类型语言,变量不需要类型定义,只需要为变量赋值。 Lua 有 8 种基本类型&#xff1a…

Postman工具介绍与安装

一、Postman介绍 Postman 乃是一款对 HTTP 协议予以支持的接口调试及测试工具,其突出特性在于功能强大,并且使用简便、易用性良好。不管是开发人员开展接口调试工作,还是测试人员进行接口测试任务,Postman 均属于首选工具之一。 接…

使用Python递归重命名文件和文件夹

使用 Python 递归重命名文件和文件夹可以通过 os 模块和 os.path 模块来完成。下面是一个示例代码,演示如何递归地重命名文件和文件夹: 1、问题背景 在研究大型数字档案时,需要将这些档案复制到本地存储进行保存。这些档案通常存储在 USB 驱…

吴恩达机器学习笔记:第 10 周-17大规模机器学习(Large Scale Machine Learning)17.3-17.4

目录 第 10 周 17、 大规模机器学习(Large Scale Machine Learning)17.3 小批量梯度下降17.4 随机梯度下降收敛 第 10 周 17、 大规模机器学习(Large Scale Machine Learning) 17.3 小批量梯度下降 小批量梯度下降算法是介于批量梯度下降算法和随机梯度下降算法之间的算法&am…

SpringBoot自动配置源码解析+自定义Spring Boot Starter

SpringBootApplication Spring Boot应用标注 SpringBootApplication 注解的类说明该类是Spring Boot 的主配置类,需要运行该类的main方法进行启动 Spring Boot 应用 SpringBootConfiguration 该注解标注表示标注的类是个配置类 EnableAutoConfiguration 直译&#…

沃尔玛自养号测评的优势是什么?有哪些技术要求

沃尔玛自养号测评的优势主要体现在以下几个方面: 1. 可控性强:自养号测评允许卖家完全掌控测评流程,包括账号的创建、管理、使用等,可以根据需要随时调整指定测评周期,确保测评效果最大化。 2. 安全性高:…

ae如何导出mp4格式?图文教程,手把手教您搞定

在创作精彩的视频内容后,将其成功导出为通用的MP4格式是确保作品在不同平台上流畅播放的重要一环。Adobe After Effects作为一款专业的视频后期制作工具,提供了丰富的功能来实现这一目标。在本文中,我们将通过图文教程,手把手地向…