前提

  1. 项目是直接通过 vue-cli脚手架 生成的;
  2. 假设在项目开发中,分为三个环境 --
    · 测试环境
    · 预生产环境
    · 生产环境

每个环境的接口地址都是不同的,而 vue-cli 给出的环境只有 devprod 这两个。虽然可以选择每次打包项目前手动修改 config/prod.env.js 中的 BASE_API 属性值,再运行 npm run build 打包项目就OK了,但还是挺烦的。如果能根据不同环境打包就一劳永逸了

步骤

第一步 安装依赖 cross-env

使用 cross-env 解决跨平台问题。在终端运行:


npm install cross-env --save-dev // 安装 cross-env 依赖

此依赖写入 devDependencies 中,仅在开发环境中使用此依赖。

第二步 修改 package.json 文件

package.jsonscripts 属性中 build 命令替换为:


// 生产环境
"build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js",
// 测试环境
"build:sit": "cross-env NODE_ENV=production env_config=sit node build/build.js",
// 预生产环境
"build:prep": "cross-env NODE_ENV=production env_config=prep node build/build.js"
第三步 添加各环境参数

config 目录下添加 sit.dev.js(测试环境)prep.dev.js(预生产环境)
那么 config 目录下有 三个js文件 分别对应 三个环境:

(1) sit.dev.js(测试环境)


module.exports = {
NODE_ENV: '"production"',
ENV_CONFIG: '"sit"',
BASE_API: '"xxx"' // 测试环境接口地址
}

(2) prep.dev.js(预生产环境)


module.exports = {
NODE_ENV: '"production"',
ENV_CONFIG: '"prep"',
BASE_API: '"xxx"' // 预生产环境接口地址
}

(3) prod.dev.js(生产环境)


module.exports = {
NODE_ENV: '"production"',
ENV_CONFIG: '"prod"',
BASE_API: '"xxx"' // 生产环境接口地址
}
第四步 修改 build/webpack.prod.conf.js 文件

const env = require('../config/prod.env')

使用构建环境参数,将 build/webpack.prod.conf.js 中的此行代码修改为:


const env = require('../config/' + process.env.env_config + '.env')
第五步 打包项目

// 测试环境打包项目
npm run build:sit // 预生产环境打包项目
npm run build:prep // 生产环境打包项目
npm run build:prod

-- END --
不足之处,欢迎指出;不喜请绕道,谢谢!

来源:https://segmentfault.com/a/1190000016410207

Vue项目根据不同运行环境打包项目的更多相关文章

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

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

  2. 转载 LibGDX: 使用 Gradle 命令运行和打包项目

    版权声明:本文为csdn xietansheng 博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: http://blog.csdn.net/xieta ...

  3. 模拟搭建Web项目的真实运行环境(一)

    序言 最近尝试完整搭建一个Web项目的运行环境,总结一下这几个月学到的知识点. 后面的文章主要包括一下几个内容: A. 搭建一个Linux服务器,用来部署Redis.Mongo等数据存储环境: B. ...

  4. PMP备考-第二章-项目运行环境与项目经理

    组织系统的三大因素:组织治理框架,管理要素和组织结构 组织治理和项目治理 组织治理 :组织中的重要决策制定框架,谁有权在什么时候用什么发放做出并推行什么重要决策. 项目治理 :组织为项目建立的高级别的 ...

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

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

  6. 模拟搭建Web项目的真实运行环境(四)

    本篇介绍如何部署mongodb环境,主要分为三个部分: 第一部分 介绍如何在ubuntu下安装mongodb, 第二部分 介绍如何在windows下安装使用MongoChef客户端, 第三部分 介绍在 ...

  7. 模拟搭建Web项目的真实运行环境(六)

    今天把Redis和Mongodb的操作整理一下,方便日后自己查看,废话不多说,直接进入主题. 一.Redis 1. 引用StackExchange.Redis.dll 由于ServiceStack.R ...

  8. 模拟搭建Web项目的真实运行环境(七)

    下面这个是mongo驱动的小案例,里面也有涉及到一点redis的操作 https://github.com/SuperRocky/MyMongoDriver 接下来通过几张图片主要介绍一下每个文件的具 ...

  9. 模拟搭建Web项目的真实运行环境(五)

    一.开启IIS功能 刚安装完的server2008是没有默认开启IIS功能,在这里简单介绍一下如何开启IIS. 步骤: 1. 打开控制面板,选中[程序] 2. 在[程序和功能]下面,选择[打开或关闭w ...

随机推荐

  1. CSS 的overflow:hidden (清除浮动)

    verflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很 了解.一提到清除浮动,我们就会想到另外一个CSS样式: ...

  2. 微信回调校验失败兼容php7

    今天在移动微信支付的代码的时候,发现校验失败,之前好好的,一点点打印了,顺着微信校验程序打印看结果,发现  $xml = $GLOBALS['HTTP_RAW_POST_DATA'];; 接收到的数据 ...

  3. 【codeforces 508D】Tanya and Password

    [题目链接]:http://codeforces.com/problemset/problem/508/D [题意] 给你一个字符的所有连续3个的子串; 让你复原出原串; (包含小写.大写字母以及数字 ...

  4. Golang Learn Log #0

    Print/Printf 区别 Print: 可以打印出字符串, 和变量 fmt.Println(var) //right fmt.Println("string") //righ ...

  5. Cesium打包命令总结

    引言 Cesium实验室QQ群里有人在问Cesium的打包问题.我想干脆总结一下Cesium的打包命令特点,写篇文章,顺带庆祝一下1024程序员节.. Cesium的npm脚本有好多,其中几个和打包相 ...

  6. Ajax的简单基础

    什么是 AJAX ? AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新. 这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行 ...

  7. PHP 缓存详解

    为什么要使用缓存 一个网站或者一个应用的标准流程是浏览器向应用服务器发出请求,应用服务器做一些计算和逻辑判断之后再请求数据库,数据库收到请求后在经过计算将数据返回给应用服务器,应用服务器再次计算后把数 ...

  8. Mac下,spacy配置

    pip3 install -U spacy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com python3 -m spa ...

  9. TZ_10_常用的2中加密算法MD5,spring-sucrity

    1.MD5 在注册时需要进行加密,在登陆时也需要加密进行配对 public class MD5util { public static String stringToMD5(String psd) { ...

  10. 字符串常用方法(转载--https://www.cnblogs.com/ABook/p/5527341.html)

    一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建 ...