当前位置: 首页 > news >正文

Vue进阶(贰幺贰)npm run build多环境编译

文章目录

    • 一、前言
    • 二、实施
    • 三、总结:需要打包区分不同环境
    • 四、拓展阅读

一、前言

项目开发阶段,会涉及打包部署到多个环境应用场景,在不同环境中,需要进行项目层面的区分,做不同的操作,可以利用打包的--mode参数配置。

Vue项目中,可以通过修改package.json文件并创建不同的环境配置文件来实现根据环境传递参数。通过在构建命令中指定环境模式,如npm run build:devnpm run build:prod,结合在代码中使用环境变量,可以在不同环境下进行自定义操作和配置。在Vue组件中,可以使用process.env访问这些环境变量。

本文将详细介绍如何在Vue项目中使用npm run build命令根据环境传递不同参数。

二、实施

步骤1:修改package.json
首先,需要修改项目的package.json文件,以便在scripts部分定义不同环境下的构建命令。找到scripts部分,并添加以下内容:

scripts": {"serve": "vue-cli-service serve","build": "vue-cli-service build","build:A": "vue-cli-service build --mode A","build:B": "vue-cli-service build --mode B","build:C": "vue-cli-service build --mode c",

步骤2:在项目根目录中新建.env.

在这里插入图片描述

默认情况下,--mode只有3种模式,如果没有配置对应的env文件,默认读取development的配置文件,所以,想要环境变量跟着打包命令走,那需要配置这个模式的env文件,即【env.模式】。

当运行 vue-cli-service 命令时,所有的环境变量都从对应的环境文件中载入。如果文件内部不包含 NODE_ENV 变量,它的值将取决于模式,例如,在 production 模式下被设置为 “production”,在 test 模式下被设置为 “test”,默认则是 “development”。

NODE_ENV 将决定您的应用运行的模式,是开发,生产还是测试。

  • NODE_ENV 设置为 ‘development’,会创建一个 webpack 配置,该配置启用热更新,不会对资源进行 hash 也不会打出 vendor bundles,目的是为了在开发的时候能够快速重新构建。

  • NODE_ENV 设置为 “production”,会创建一个可用于部署的应用程序。

  • NODE_ENV 设置为 “test”,会创建一个优化过后的,并且旨在用于单元测试的 webpack 配置,它并不会处理图片以及一些对单元测试非必需的其他资源。

文件中定义的数据只能是【NODE_ENV】、【BASE_URL】、【VUE_APP_开头】这3种key。

注⚠️:只有 NODE_ENVBASE_URL 和以 VUE_APP_ 开头的变量将通过 webpack.DefinePlugin 静态地嵌入到客户端侧的代码中。

嵌入的意思就是说,在客户端代码中可以访问到这些环境变量。比如可以这样获取变量:console.log(process.env.VUE_APP_SECRET)

以【 npm run build:A】进行打包为例,当执行 npm run build:A,实际会执行 vue-cli-service build --mode A,这个命令指定了构建时使用 A 环境。相应的就会读取 .env.A 环境配置。

.env.A配置文件如下:

在这里插入图片描述

注⚠️:打包后得到的参数,是【.env】文件和【.env.打包模式】文件合并一起的数据,如果key重复,以【.env.打包模式】文件的值为最终结果。

在这里插入图片描述

环境文件的命名规则:

.env                # 在所有的环境中被载入
.env.local          # 在所有的环境中被载入,但会被 git 忽略
.env.[mode]         # 只在指定的模式中被载入
.env.[mode].local   # 只在指定的模式中被载入,但会被 git 忽略

文件中以"键=值"的形式配置环境变量,如果不同文件存在同名的环境变量,保留高优先级文件中的值。优先级为:.env.[mode].local > .env.[mode] > .env.local > .env

即:为一个特定模式准备的环境文件 (例如 .env.production) 将会比一般的环境文件 (例如 .env) 拥有更高的优先级。

此外,Vue CLI 启动时已经存在的环境变量拥有最高优先级,并不会被 .env 文件覆写。.env 环境文件是通过运行 vue-cli-service 命令载入的,因此环境文件发生变化,需要重启服务。

步骤3:在项目应用

const baseurl = process.env.VUE_APP_ONE || process.env.VUE_APP_TWO

三、总结:需要打包区分不同环境

  1. package.json文件scripts部分 "build:xxx": "vue-cli-service build --mode xxx" 配置环境打包命令。

  2. 需要创建【.env.mode的模式值】这个文件,如果没配置会默认读取dev的配置文件,文件里面可以配置专属的环境值,切记key只能是【NODE_ENV】、【BASE_URL】、【VUE_APP_开头】。

  3. 打包后打印的process.env的值是【.env.mode的模式值】文件与【.env】文件合并的对象值,如果key重复,最终结果为【.env.mode的模式值】文件值。

四、拓展阅读

  • 《Vue进阶(五十一): vue-cli 脚手架 webpack.base.conf.js 配置文件讲解》
  • 《Vue CLI 模式和环境变量》
  • 《Vue CLI 服务》

相关文章:

Vue进阶(贰幺贰)npm run build多环境编译

文章目录 一、前言二、实施三、总结:需要打包区分不同环境四、拓展阅读 一、前言 项目开发阶段,会涉及打包部署到多个环境应用场景,在不同环境中,需要进行项目层面的区分,做不同的操作,可以利用打包的--mo…...

社交新零售下开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序的创新实践与发展剖析

摘要:在社交电商蓬勃发展并向社交新零售转型的浪潮中,多种创新模式与技术应用不断涌现。本文聚焦于开源 AI 智能名片 21 链动模式 S2B2C 商城小程序,深入探讨其在社交新零售格局下的内涵、优势、应用策略以及对行业发展的深远影响&#xff0c…...

xml格式化(1):使用python的xml库实现自闭合标签

前言 最近一段时间一直想要写一个urdf格式化插件。 至于为什么嘛,因为使用sw2urdf插件,导出的urdf,同一标签的内容,是跨行的,这就导致,内容比较乱,而且行数比较多。影响阅读。 因此&#xff…...

重温设计模式--13、策略模式

策略模式介绍 文章目录 策略模式介绍C 代码示例 策略模式是一种行为设计模式,它允许在运行时选择算法的行为。该模式将算法的定义和使用分离开来,使得算法可以独立于使用它的客户端而变化,提高了代码的灵活性和可维护性。 其主要包含以下几个…...

【Rust自学】10.7. 生命周期 Pt.3:输入输出生命周期与3规则

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 10.7.1. 深入理解生命周期 1.指定生命周期参数的方式依赖于函数所做的事情 以上一篇文章的…...

产品经理-竞品分析

竞品分析是企业制定战略和产品优化的关键步骤,通过深入分析竞争对手的产品与策略,企业可以更好地定位自己并寻找改进的方向。这篇文章详细阐述了进行有效竞品分析的五个关键步骤,帮助产品经理精准掌握竞争态势,从而在市场中占据有…...

51单片机——8*8LED点阵

LED 点阵的行则为发光二极管的阳极,LED 点阵的列则为发光二极管的阴极 根据 LED 发光二极管导通原理,当阳极为高电平,阴极为低电平则点亮,否则熄灭。 因此通过单片机P0口可控制点阵列,74HC595可控制点阵行 11 脚 SR…...

力扣第136题:只出现一次的数字 巧用异或

力扣第136题:只出现一次的数字 C语言解法 题目描述 给定一个非空的整数数组 nums ,其中除一个元素只出现一次外,其他每个元素均出现两次。找出那个只出现一次的元素。 示例 示例 1: 输入: nums [2,2,1] 输出: 1示例 2: 输入: nums [4…...

TCP 如何获取端口信息

注:本文为 “TCP 如何获取端口信息” 相关讨论摘录。 机翻,未校。 How TCP Gets Port Information TCP 如何获取端口信息 asked Nov 10, 2024 at 19:57 user15503745 API Call for Connection API 调用以建立连接 Before the app can send data d…...

RabbitMQ发布确认高级篇(RabbitMQ Release Confirmation Advanced Edition)

系统学习消息队列——RabbitMQ的发布确认高级篇 简介 ‌RabbitMQ是一个开源的消息代理软件,实现了‌高级消息队列协议(AMQP)‌,主要用于在分布式系统中进行消息传递。RabbitMQ由‌‌Erlang语言编写,具有高性能、健壮…...

福建省乡镇界面数据arcgis格式shp乡镇名称和编码无偏移坐标内容测评

【标题解析】 标题"最新福建省乡镇界面数据arcgis格式shp乡镇名称和编码无偏移坐标"揭示了几个关键信息。这是关于福建省乡镇级别的地理数据,它包含乡镇的边界信息。这些数据是以ArcGIS兼容的SHP(Shapefile)格式存储的,…...

Kafka 消费者

Kafka消费者主要负责消费(读取和处理)由生产者发布的消息。 1 消费者入门 消费组将具有相同group.id的消费者实例组织成组。它们共同读取一个或多个主题的消息。每个消费者都有一个对应的消费组。 消息发布到主题后,只会被投递给订阅它的每…...

人形机器人当前现状与挑战:从技术突破到未来发展

近年来,人形机器人(Humanoid Robots)作为人工智能和机器人领域的一大热门话题,吸引了全球科技公司和研究机构的广泛关注。尤其是在日本、美国、欧洲等技术领先的地区,人形机器人的研究与发展日益繁荣,从早期…...

6 网络编程

基本概念扫盲 为什么需要计算机网络 如下图所示,A、B、C三个不同地域的主机要想进行通信不是凭空就可以通信的,而是需要基于互联网进行互相连接、通信。 为什么需要协议 如下图所示,红和蓝是联合攻打绿,它们以烽火为信号出动攻打绿,那么这时候就需要一个约定,比如红先…...

智能边缘计算:开启智能新时代

什么是智能边缘计算? 在当今数字化浪潮中,边缘计算已成为一个热门词汇。简单来说,边缘计算是一种分布式计算架构,它将数据处理和存储更靠近数据源的位置,而不是集中于远程数据中心。通过这种方式,边缘计算…...

AI投资分析:用于股票评级的大型语言模型(LLMs)

“AI in Investment Analysis: LLMs for Equity Stock Ratings” 论文地址:https://arxiv.org/pdf/2411.00856 摘要 投资分析作为金融服务领域的重要组成部分,LLMs(大型语言模型)为股票评级带来了改进的潜力。传统的股票评级方式…...

初始SpringBoot:详解特性和结构

??JAVA码农探花: ?? 推荐专栏:《SSM笔记》《SpringBoot笔记》 ??学无止境,不骄不躁,知行合一 目录 前言 一、SpringBoot项目结构 1.启动类的位置 2.pom文件 start parent 打包 二、依赖管理特性 三、自动配置特性…...

【计算机网络】深入解析OSI和TCP/IP模型:网络请求的底层处理过程

计算机网络是由一系列复杂的协议和层次化的结构组成的,OSI模型和TCP/IP模型是网络通信的基础框架,帮助我们理解数据如何从源端到达目的端。在这篇文章中,我将通过深入分析每一层的功能和具体处理流程,帮助你更加详细地理解网络请求…...

快速学习 pytest 基础知识

全篇大概 5000 字(含代码),建议阅读时间10min 简介 Pytest是一个非常成熟的测试框架,适用于但愿测试、UI测试、接口测试。 简单灵活、上手快支持参数化具有多个第三方插件可以直接使用 assert 进行断言 一、Pytest安装 pip inst…...

Ae:合成设置 - 3D 渲染器

Ae菜单:合成/合成设置 Composition/Composition Settings 快捷键:Ctrl K After Effects “合成设置”对话框中的3D 渲染器 3D Renderer选项卡用于选择和配置合成的 3D 渲染器类型,所选渲染器决定了合成中的 3D 图层可以使用的功能&#xff0…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

GitHub 趋势日报 (2025年06月06日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...