vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)

news2025/1/8 5:51:55

vue-cli区分办法

vue配置生产环境.env.production、测试环境.env.development

vue配置webpack生产环境、测试环境

在使用webpack创建完vue2项目的时候,为了解决生产打包、测试打包对应的全局变量不一致的问题。

首先看一下package.json的改动:

  "scripts": {
    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
    "start": "npm run dev",
    "build": "node build/build.js",
    "build:dev": "cross-env ENV_NUM=0 node build/build.js",
    "build:pro": "cross-env ENV_NUM=1 node build/build.js"
  },

针对我这里,我增加了两个打包变量

build:dev对应的是测试版本的打包
build:pro对应的是生产版本的打包

运行的命令分别是

npm run build:dev

npm run build:pro

cross-env是什么?

运行 npm run build:dev就会将ENV-NUM的值传给process.env,在项目中就可以通过process.env.ENV_NUM 拿到值,为 ’0‘;
但是webpack 的NPM.script 传参写法在不同系统上兼容不一样,有可能会导致系统卡死。(我是用mac的,我的同事全是用windows,说不定给甲方的代码也会有用lunix的大神,当然如果是用服务器打包,那是lunix多)

用cross-env插件来处理这个问题:

安装 npm i cross-env --save

npm i cross-env --save

看下目录结构:
在这里插入图片描述
dev.env.js只有在本地开发的时候会用到,用在webpack.dev.conf.js;
prod.env.js会在打包之后用到,无论是测试环境还是生产环境,用在webpack.prod.conf.js中。

新建prodReal.env.js文件,和prod.env.js同级:
在这里插入图片描述

'use strict'
// 这个环境为线上真实环境
module.exports = {
  NODE_ENV: '"production"',
  // ENV_NUM 没有实际作用 只是做标识
  ENV_NUM: '"1"',
  VUE_APP_URL: '"http://xxxxxxxxx"',
}

这个时候我们去webpack.prod.conf.js文件中:
在这里插入图片描述

const prodenv = require('../config/prod.env')
const prodRealenv = require('../config/prodReal.env')

在下面plugins做更改:
在这里插入图片描述
判断在package.json传入的变量,也就能知道他执行的是build:dev还是build:pro了,然后使用响应的配置。

    new webpack.DefinePlugin({
      // 0 本地开发/测试环境  1为 生产环境
      'process.env': process.env.ENV_NUM === '0' ? prodenv : prodRealenv
    }),

到这个时候就已经完活了。

看一下本地开发环境的配置:
在这里插入图片描述
线上测试环境的配置:
在这里插入图片描述
线上生产环境的配置:
在这里插入图片描述

验证

到目前为止就完全完活了,下面测试下
将dev.env.js的url换成:我是本地环境
将prod.env.js的url换成:我是线上测试环境
将prodReal.env.js的url换成:我是线上生产环境

在根组件里面增加一行打印:

  mounted() {
    // 备用打印
    console.log("===================", 'process.env.VUE_APP_URL')
    console.log(process.env, 'process.env.VUE_APP_URL')
  },

1.本地运行打印:

npm run dev 

在这里插入图片描述
2.线上测试环境运行,首先打包:

npm run build:dev

打包后cmd进入dist文件夹中,执行http-server命令,启动一下项目:
http-server命令报错的话:

npm i -g http-server

在这里插入图片描述

3.线上生产环境运行,首先打包:

npm run build:pro

打包后cmd进入dist文件夹中,执行http-server命令,启动一下项目:
http-server命令报错的话:

npm i -g http-server

在这里插入图片描述

测试成功!

学习参考:修改vue-cli2的webpack环境,增加一个数据模拟dev及多个不同的build地址

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

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

相关文章

MARL算法系列(1):IQL【原理+代码实现】

原文题目:Multiagent cooperation and competition with deep reinforcement learning 作者:Tampuu, Ardi and Matiisen, Tambet and Kodelja, Dorian等 发表时间:2017年 主要内容:相互独立的两个DQN智能体,竞争任务下…

2022年威胁隐私和安全的数个“罪魁祸首”

随着互联网技术的不断发展,我们对网络的信任也在不断增加,甚至将自己的私人数据委托给各种在线平台,如个人数字身份信息、银行账户、各种机密信息。网络一方面的确带来变革型的进步,但另一方面,频频曝光的数据泄露事件…

VueJs中setup的使用(下)

前言在Vue当中,父组件想要向子组件传值,是通过在父组件标签上通过自定义属性实现的,而在子组件中是通过props进行接收在Vue2.0里面,在子组件中的选项式API配置项选项中props进行接收就可以了的,在子组件中的模板中可以直接使用但在Vue3里面与Vue2.0存在一些差异,这个主要是针对…

excel文件管理:如何进行密码保护和破解? 下篇

在上篇文章中,我们提到了设置工作簿的打开权限密码、修改权限密码、保护工作簿的密码、允许编辑区域的密码,并且讲到了两种破解excel密码的方式。今天,我们书接上回,继续讲解excel中常见的密码保护和破解方式,一起来看…

浅谈屏幕适配

文章目录1. 概述2. 屏幕尺寸3. 屏幕分辨率4. 屏幕像素密度5. dp、sp、px6. mdpi、hdpi、xdpi..7. 屏幕分辨率限定符8. 最小宽度限定符8.1 获取设计图最小宽度(dp)8.2 生成对应的dimens.xml文件8.3 尺寸限定符8.4 其它9. 今日头条相关9.1 系统状态栏获取不对问题9.2 autosize1. …

Elasticsearch8.X入门实战(二)Elasticsearch集群架构

Elasticsearch集群由一个或多个节点(服务器)组成,这些节点一起保存Elasticsearch的所有数据,并提供跨所有节点的联合索引和搜索功能。集群由一个唯一的名称来标识,该名称默认为“elasticsearch”(可以在配置文件中修改)。当某个节点被设置为相同的集群名称时,该节点才能…

Docker容器的简单介绍与使用

前言:大家好,我是小威,24届毕业生,曾经在某央企公司实习,目前入职某税务公司。本篇文章将记录和分享docker容器相关的知识点。 本篇文章记录的基础知识,适合在学Java的小白,也适合复习中&#x…

如何更好地进行 Android 组件化开发——路由原理篇

前言 组件化开发的会实现代码隔离,在开发时访问不到模块的代码,降低代码耦合度。那么如何跳转组件的页面、如何进行组件间的通信是个问题。这通常会使用到 ARouter、TheRouter、WMRouter 等路由框架。可能有不少人只知道怎么去调用,并不知道…

Pod内容详情梳理

本篇是笔者的一篇读书笔记,用于梳理pod的详情,方便理解和学习,也方便后续自己查询。一、Pod的概述Pod是k8s里面典型的CR,从它的元数据来看,具有所有CR的基本数据构成,分别是 version、kind,以及…

迅为RK3568开发板支持多屏同显/异显动态方案

iTOP-RK3568开发板采用四核Cortex-A55处理器,芯片内置VOP控制器,支持HDMI、LVDS、MIPI、EDP四种显示接口的多屏同显、异显和异触,可有效提高行业定制的拓展性。 三屏同显: 三屏异显: 双屏同显: 双屏异显&am…

Docker容器里进程的 pid 是如何申请出来的?

大家好,我是飞哥!如果大家有过在容器中执行 ps 命令的经验,都会知道在容器中的进程的 pid 一般是比较小的。例如下面我的这个例子。# ps -ef PID USER TIME COMMAND1 root 0:00 ./demo-ie13 root 0:00 /bin/bash21 root …

编程小技巧9-如何生成没有水印的代码图片(IDEA carbon-now-sh插件使用教程)

陈老老老板🦸👨‍💻本文专栏:快速变成小技巧(主要讲一些平时常用的、有助于提高开发素的内容)👨‍💻本文简述:本文讲一下使用carbon-now-sh插件生成图片超详细教程。&…

STM32

一:生成独立的他.h和.c文件 勾选后,生成单独的.h和.c文件。不勾选的话都在main里面。 二:常用。 1:电平输出。 HAL_GPIO_WritePin(PIN_LED_1_GPIO_Port, PIN_LED_1_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(PIN_LED_1_GPIO_Port, …

django 登录流程实现

一、简介: 1、用户输入正确的用户名、密码、验证码点击登录即可跳转到管理员页面。 2、用户输入错误的用户名或者密码或者验证码需要错误信息提示(数据校验) 二、实现步骤 1、新建一个项目(创建项目过程和数据库略,…

签完三方后无法去实习,有什么可以弥补的吗?

作者:阿秀校招八股文学习网站:https://interviewguide.cn这是阿秀的第「228」篇原创你好,我是阿秀。2023届秋招已经步入尾声,很多小伙伴都已经找到工作&签约三方,慢慢结束了自己的秋招之旅,不过也有一些…

Local Attention和动态深度卷积间的关系

摘要 Local Vision Transformer 是分别在一个个小的局部窗口中进行注意力计算。 作者将局部注意力重新定义为通道级的局部连接层(channel-wise locally-connected layer),并4个方面进行分析:两种网络的正则化方式,稀疏…

C语言实现九大排序算法(建议收藏!)

文章目录排序算法稳定性1. 插入排序原理排序过程代码实现性能分析2. 希尔排序原理排序过程关于增量取值代码实现性能分析3. 选择排序原理排序过程代码实现性能分析4. 堆排序原理排序过程代码实现性能分析5. 冒泡排序原理排序过程代码实现性能分析6. 快速排序原理Hoare法挖坑法前…

Easy App Locker - 给你的 mac 应用加锁保护你的隐私

Easy App Locker - 给你的 mac 应用加锁保护你的隐私 Easy App Locker可以对Mac上的单个应用进行密码保护。维护Mac上的隐私。 像如果你的某个应用存在隐私数据就可以使用该软件将此应用上锁,这样当你的朋友使用你的 mac 时你就不用担心你的隐私被泄露了&#xff0…

Java中创建线程的五种方式

目录: 前言 1.进程与线程的区别? 2.进程是操作系统进行资源分配的基本单位,而操作系统是以线程为单位进行调度的。 3. Java操作多线程,依赖最核心的类Thread。 4.关于start和run的区别? 5.使用JDK自带的工具jcon…

ArcGIS基础实验操作100例--实验7分割多部分要素

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验7 分割多部分要素 目录 一、实验背景 二、实验数据 (1)查看多…