前提

  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. Netty TCP粘包/拆包问题《二》

    1.DelimiterBasedFrameDecoder:是以分隔符作为结束标志进行解决粘包/拆包问题 代码: EchoClient:客户端 /* * Copyright 2012 The Netty ...

  2. Leetcode139. Word Break单词拆分

    给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可以假设字典中没有重复 ...

  3. 修改linux命令行的提示符PS1

    # If not running interactively, don't do anything [ -z "$PS1" ] && return # check ...

  4. Vue+jquery上拉加载

    <ul> <li class="new-list" v-for="item in proarr"> <a :href=" ...

  5. php基础学习过程

    1.基础知识 a.注释: <?php // 这是单行注释 # 这也是单行注释 /* 这是多行注释块 它横跨了 多行 */ ?> b.大小写敏感: 在 PHP 中,所有用户定义的函数.类和关 ...

  6. x86架构:x86架构

    ylbtech-x86架构:x86架构 X86架构(The X86 architecture)是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令 ...

  7. RSA加密算法在WEB中的应用

    加密算法有很多,如不可逆的摘要算法MD5.SHA(安全哈希算法),可逆的Base64编码,对称加密算法DES.AES,还有非对称加密算法DH.RSA等.那是不是说明我们可以使用任何一种加密算法就能保证 ...

  8. WIN10 Internet协议版本tcp/ipv4属性灰色没有法点击

    问题图如下: 1.右键打开“计算机”点击菜单,选中“管理”: 2.进入计算机管理后,打开“设备管理器”,然后在右侧打开点击“网络适配器”,如果有驱动的话,在驱动上右键点击菜单,选中卸载: 3.卸载网卡 ...

  9. Mybatis逆向工程文件标签的详细介绍:

    ?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUB ...

  10. BZOJ2982: combination Lucas模板

    2982: combination Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 734  Solved: 437[Submit][Status][Di ...