在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue-cli 根據(jù)不同的環(huán)境打包

vue-cli 根據(jù)不同的環(huán)境打包

項(xiàng)目開發(fā)中有三個(gè)環(huán)境,分別是測(cè)試環(huán)境,預(yù)生產(chǎn)環(huán)境,生產(chǎn)環(huán)境

如題,根據(jù)項(xiàng)目需要,目前需要打包,通過vue-cli中的npm run build 打包,這個(gè)只能打包到一個(gè)環(huán)境,但是,項(xiàng)目中有三個(gè)環(huán)境,每個(gè)環(huán)境的接口地址都不同,根據(jù)process.env分別進(jìn)行接口的調(diào)用,但是如何處理打包呢?

目前的解決方案是復(fù)制了幾個(gè),build下面的build.js ,感覺這樣并不是最優(yōu)的解決方案,
不知是否有更完美的解決方案?
感激不盡!

回答
編輯回答
夢(mèng)一場(chǎng)

前提:通過 vue-cli 使用 webpack 項(xiàng)目模板創(chuàng)建的項(xiàng)目

先研究一下 build 目錄下的內(nèi)容,然后設(shè)置不同的環(huán)境變量,API 路徑、端口以及 vue-router 的 base 等,還可以通過 webpack define plugin 將環(huán)境變量傳遞到前端

如果想有人帶著研究 build 目錄下的內(nèi)容,可以參加我的講堂講座《學(xué)習(xí) Vue 你需要知道的 webpack 知識(shí)》,另外也可以參加極客學(xué)院的同名課程

2017年2月9日 22:43
編輯回答
舊言

如何根據(jù)不同環(huán)境啟動(dòng)呢

2017年3月19日 07:24
編輯回答
雅痞

解決此類問題還得靠自己,大神一般都不給力
vue-cli 中build中build.js部分代碼做如下修改

require('./check-versions')()

// process.env.NODE_ENV = 'production'

var ora = require('ora')
var rm = require('rimraf')
var path = require('path')
var chalk = require('chalk')
var webpack = require('webpack')
var config = require('../config')
var webpackConfig = require('./webpack.prod.conf')

var spinner = ora('building for ' + process.env.NODE_ENV + ' of ' + process.env.env_config+ ' mode...' )
spinner.start()
// var spinner = ora('building for production...')
// spinner.start()
。。。。

build中webpack.prod.conf.js做如下修改

const env = config.build[process.env.env_config+'Env']
// var env = process.env.NODE_ENV === 'testing' ?
//     require('../config/test.env') :
//     config.build.env
。。。。

config中的index.js 部分代碼修改如下

module.exports = {
    build: {
        prodEnv: require('./prod.env'),
        sitEnv: require('./sit.env'),
        ppeEnv: require('./ppe.env'),
        index: path.resolve(__dirname, '../dist/' + new_dateTime + '/index.html'),
        。。。。。

config中 dev.env.js 修改
開發(fā)環(huán)境用的是測(cè)試接口,通過merge進(jìn)行拷貝

var merge = require('webpack-merge')
var sitEnv = require('./sit.env')

module.exports = merge(sitEnv, {
  NODE_ENV: '"development"'
})

在config中新建sit.env.js

//測(cè)試
module.exports = {
  NODE_ENV: '"sitEnvironment"',
  ENV_CONFIG: '"sit"',
  hosturl: '"https://sitxxx"',
。。。
}

在config中新建ppe.env.js

//預(yù)生產(chǎn)
module.exports = {
  NODE_ENV: '"ppeEnvironment"',
  ENV_CONFIG: '"ppe"',
hosturl: '"https://ppexxx"'
。。。
}

生產(chǎn)環(huán)境是prod.env.js vue-cli 自帶

安裝cross-env

package.json 修改

  "scripts": {
    "dev": "node build/dev-server.js",
    "build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js",
    "build:ppe": "cross-env NODE_ENV=ppeEnvironment env_config=ppe node build/build.js",
    "build:sit": "cross-env NODE_ENV=sitEnvironment env_config=sit node build/build.js",
    "e2e": "node test/e2e/runner.js",
    "test": "npm run e2e"
  },

end

2018年7月14日 05:00
編輯回答
朕略萌
let baseUrl = ''
if (process.env.NODE_ENV === 'development') {
  baseUrl = 'http://dev.xxx.com/Api'
} else {
  baseUrl = '//www.xxx.com/Api'
}
2017年9月7日 12:17