https://cli.vuejs.org/zh/guide/mode-and-env.html#%E6%A8%A1%E5%BC%8F

模式

模式是 Vue CLI 项目中一个重要的概念。默认情况下,一个 Vue CLI 项目有三个模式:

  • development 模式用于 vue-cli-service serve

  • production 模式用于 vue-cli-service buildvue-cli-service test:e2e

  • test 模式用于 vue-cli-service test:unit

package.json默认配置
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
改为 
"scripts": {
"serve": "vue-cli-service serve --mode development",
"test": "vue-cli-service build --mode test",
"build": "vue-cli-service build --mode production",
"lint": "vue-cli-service lint"
},

--mode XXX 和下面新建的.env.XXX一一对应。

新建.env.development .env.test .env.production

注意:

  1. .env.development .env.test .env.production修改了都要重启服务。

  2. vue项目中任意位置可以通过process.env.NODE_ENV 和process.env.VUE_APP_ENV来访问变量

// .env.development
NODE_ENV='development'
#本地开发模式
# 变量must start with VUE_APP_
VUE_APP_ENV = 'development' //.env.test 测试环境配置 是NODE_ENV=production 不是test
NODE_ENV='production'
#打包到测试环境
# must start with VUE_APP_
VUE_APP_ENV = 'test' //.env.production 正式环境配置
NODE_ENV='production'
#打包到线上环境
VUE_APP_ENV = 'production'

#env.development.js
// 本地环境配置
module.exports = {
title: 'vue-h5-template',
baseUrl: 'http://localhost:9018', // 项目地址
baseApi: 'https://test.xxx.com/api', // 本地api请求地址,注意:如果你使用了代理,请设置成'/'
APPID: 'xxx',
APPSECRET: 'xxx',
$cdn: 'https://imgs.solui.cn',
desc:'本地开发环境'
} #env.test.js 测试
module.exports = {
title: 'vue-h5-template',
baseUrl: 'https://test.xxx.com', //test 测试项目地址
baseApi: 'https://test.xxx.com/api', //test 测试api请求地址
APPID: 'xxx',
APPSECRET: 'xxx',
$cdn:'https://imgs.solui.cn',
desc:'测试环境'
} #env.production.js // 正式 module.exports = {
title: 'vue-h5-template',
baseUrl: 'https://www.xxx.com/', // 正式项目地址
baseApi: 'https://www.xxx.com/api', // 正式api请求地址
APPID: 'xxx',
APPSECRET: 'xxx',
$cdn:'https://imgs.solui.cn',
desc:'线上环境'
} index.js
// 根据环境引入不同配置 process.env.NODE_ENV=development|test|production
const config = require('./env.' + process.env.VUE_APP_ENV)
module.exports=config // 根据环境不同引入不同baseApi地址 如App.vue中
// import config from "@/config"; import也可以 但是毕竟是module.export导出的所以用require()接收
const { title, baseUrl, baseApi, desc } = require("@/config");
console.log(process.env.NODE_ENV);
console.log(title);
console.log(baseUrl);
console.log(baseApi);
console.log(desc);
在axios中使用 import config from "@/config";
import axios from 'axios'
import store from '@/store'
import { Toast } from 'vant'
// 根据环境不同引入不同api地址
const { title, baseUrl, baseApi, desc } = require("@/config");
// create an axios instance
const service = axios.create({
baseURL: baseApi, // url = base api url + request url
withCredentials: true, // send cookies when cross-domain requests
timeout: 5000 // request timeout
})
...
#main.js
// 设置 js中可以访问 $cdn
// 引入cdn
const { $cdn } = require('./config')
Vue.prototype.$cdn = $cdn
#vue.config.js
// 设置 css中可以访问 $cdn
const path = require("path");
const config=require('./src/config')
css: {
// 是否使用css分离插件 ExtractTextPlugin
extract: true,
// 开启 CSS source maps?
sourceMap: false,
// css预设器配置项
loaderOptions: {
// // 注入 `sass` 的全局变量,以后vue页面直接使用无需引用。, $cdn可以配置图片cdn
scss: {
prependData: `
@import "./src/styles/main.scss";
$cdn: "${config.$cdn}"; `
}
},
// 启用 CSS modules for all css / pre-processor files.
modules: false
},
<script>
//在js中使用图片地址
console.log(this.$cdn) //是因为 Vue.prototype.$cdn = $cdn
</script>
<style lang="scss" scoped>
//在css中使用图片地址
.logo {
width: 120px;
height: 120px;
background: url($cdn + '/weapp/logo.png') center / contain no-repeat;
//是因为vue.config.js $cdn: "${config.$cdn}";
}
</style>
 

vue 多环境打包的更多相关文章

  1. vue分环境打包配置不同命令

    1.安装cross-env (cross-env能跨平台地设置及使用环境变量)cnpm/npm  i  cross-env -D 2.新建模板 红色的为相关文件 3.配置各个文件 (1)config下 ...

  2. VUE生产环境打包build

    1.进入到项目根目录执行 npm run build 此时会自动打包在dist目录下 2.安装服务 npm  install -g serve 3.启动 serve dist 总结: 以上就是生产环境 ...

  3. vue分环境打包配置方法一

    直接上代码配置: 首先是config下面的文件修改 dev.env.js  'use strict' const merge = require('webpack-merge') const prod ...

  4. 基于Vue + webpack + Vue-cli 实现分环境打包项目

    需求由来:我公司项目上线发布至服务器分为三个环境分别为测试环境.预发布环境.生产环境:前期做法是项目通过脚步打包时由脚步把域名和后缀名之类的全部替换成要发布的环境所需要的,因为我公司的项目比较大由许许 ...

  5. 前端自动分环境打包(vue和ant design)

    现实中的问题:有时候版本上线的时候,打包时忘记切换环境,将测试包推上正式服务器,那你就会被批了. 期望:在写打包的命令行的时候就觉得自己在打包正式版本,避免推包时候的,不确信自己的包是否正确. 既然有 ...

  6. VUE 如何分环境打包(开发/测试/生产)配置

    前言 之前小玲一直处于更新,迭代项目的状态,开发环境.测试环境.生产环境都是前辈配置好的,自己几乎没有配置过,这次做几个新项目时,面临着上线,需要分环境打包配置,于是在网上遨游了一会会,摸索着按照网上 ...

  7. vue中利用.env文件存储全局环境变量,以及配置vue启动和打包命令

    目录 1,前言 2,.env文件的作用 3,配置.env文件 4,配置启动命令 5,获取.env中的全局变量 5,实际用处 1,前言 分享一下vue项目中利用.env文件存储全局环境变量,以及利于项目 ...

  8. Vue项目分环境打包的实现步骤

    转:https://blog.csdn.net/xinzi11243094/article/details/80521878 方法一:亲测真的有效 在项目开发中,我们的项目一般分为开发版.测试版.Pr ...

  9. vue cli2.x配置多环境打包

    一.安装 npm install --save-dev cross-env 二.配置步骤 1.修改config下的文件 //test.env.js 'use strict' module.export ...

随机推荐

  1. Python基础教程,流程控制语句详解

    1.程序结构 计算机在解决问题时,分别是顺序执行所有语句.选择执行部分语句.循环执行部分语句,分别是:顺序结构.选择结构.循环结构.如下图: 很多人学习python,不知道从何学起.很多人学习pyth ...

  2. 《RabbitMQ》如何保证消息不被重复消费

    一 重复消息 为什么会出现消息重复?消息重复的原因有两个:1.生产时消息重复,2.消费时消息重复. 1.1 生产时消息重复 由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认 ...

  3. 机器学习 | 详解GBDT梯度提升树原理,看完再也不怕面试了

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第30篇文章,我们今天来聊一个机器学习时代可以说是最厉害的模型--GBDT. 虽然文无第一武无第二,在机器学习领域并没有 ...

  4. Linux 中文编码

  5. Jenkins持续集成(上)-Windows下安装Jenkins

    环境:Windows 2008 R2.Jenkins2.235.1: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成SLB.配置管理.Jenkins)> ...

  6. 智能问答中的NLU意图识别流程梳理

    NLU意图识别的流程说明 基于智能问答的业务流程,所谓的NLU意图识别就是针对已知的训练语料(如语料格式为\((x,y)\)格式的元组列表,其中\(x\)为训练语料,\(y\)为期望输出类别或者称为意 ...

  7. 2020-07-09:mysql如何开启慢查询?

    福哥答案2020-07-09: 1.参数说明 slow_query_log 慢查询开启状态slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般 ...

  8. C#LeetCode刷题之#892-三维形体的表面积(Surface Area of 3D Shapes)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4136 访问. 在 N * N 的网格上,我们放置一些 1 * 1 ...

  9. Kubernetes实战总结 - 自定义Prometheus

    一.概述 首先Prometheus整体监控结构略微复杂,一个个部署并不简单.另外监控Kubernetes就需要访问内部数据,必定需要进行认证.鉴权.准入控制, 那么这一整套下来将变得难上加难,而且还需 ...

  10. eric4 编译 中文 控件 报错 解决

    eric4 在qt设计师界面, 设计 中文名控件 时,有时候不能编译,报错如下: 解决办法: 打开eric4---setting----preferences 按下图操作后 ,重新启动eric4即可解 ...