vue分別打包測試環(huán)境和正式環(huán)境

最近解除了一個老項目,不是通過腳手架搭建的vue項目辞州,所以需要手動配置打包環(huán)境

這是原創(chuàng)作者的鏈接,分享給大家:
https://blog.csdn.net/qq_19924321/article/details/109293984

vue打包時使用不同的環(huán)境變量

同一個項目通過打包使用不同的環(huán)境變量,目前的環(huán)境有三個:
一崭孤、本地------開發(fā)環(huán)境
二、線上------測試環(huán)境
三嗤形、線上------正式環(huán)境
我們都知道vue默認的打包都是生產(chǎn)模式派殷,所以說打包后的都是線上的東西拓轻,現(xiàn)在我們解決一下如何通過不同命令的打包方式使用不同的環(huán)境變量勿锅。

安裝cross-env

npm install cross-env --save-dev

config目錄,新增test.env.js垮刹,文件目錄如下
  • config
  1. index.js
  2. dev.env.js
  3. prod.env.js
  4. test.env.js

修改 prod.env.js

'use strict'
module.exports = {
  NODE_ENV: '"production"',
  EVN_CONFIG:'"prod"',
  TITLE:'"正式環(huán)境title"',
}

修改 dev.env.js

'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
 
module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  EVN_CONFIG:'"dev"',
  TITLE:'"開發(fā)環(huán)境title"',
})

修改 test.env.js

'use strict'
module.exports = {
  NODE_ENV: '"production"',
  EVN_CONFIG:'"test"',
  TITLE:'"測試環(huán)境title"',
}

修改config/index.js,修改build那一部分的代碼吞鸭,其他不變

build: {
    // 添加test遮咖、prod環(huán)境變量配置
    prodEnv: require('./prod.env'),
    testEnv: require('./test.env'),
 
    //如果需要通過打包不同的環(huán)境變量漓藕,打包到不同的文件夾可以這樣寫,注意用了此處代碼需要注釋點下面的index和assetsRoot這兩個配置
    // index: path.resolve(__dirname, '../' + process.env.EVN_CONFIG + '_dist/index.html'),
    // assetsRoot: path.resolve(__dirname, '../' + process.env.EVN_CONFIG + '_dist'),
 
    // Template for index.html
    index: path.resolve(__dirname, '../dist/index.html'),
    // Paths
    assetsRoot: path.resolve(__dirname, '../dist'),
 
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
 
    /**
     * Source Maps
     */
    productionSourceMap: true,
    // https://webpack.js.org/configuration/devtool/#production
    devtool: '#source-map',
 
    // Gzip off by default as many popular static hosts such as
    // Surge or Netlify already gzip all static assets for you.
    // Before setting to `true`, make sure to:
    // npm install --save-dev compression-webpack-plugin
    productionGzip: false,
    productionGzipExtensions: ['js', 'css'],
 
    // Run the build command with an extra argument to
    // View the bundle analyzer report after build finishes:
    // `npm run build --report`
    // Set to `true` or `false` to always turn it on or off
    bundleAnalyzerReport: process.env.npm_config_report
  }

修改build/build.js,注釋process.env.NODE_ENV = 'production然后修改spinner嫩与。

'use strict'
require('./check-versions')()
 
// process.env.NODE_ENV = 'production'
 
const ora = require('ora')
const rm = require('rimraf')
const path = require('path')
const chalk = require('chalk')
const webpack = require('webpack')
const config = require('../config')
const webpackConfig = require('./webpack.prod.conf')
 
// const spinner = ora('building for production...')
var spinner = ora('building for ' + process.env.NODE_ENV + ' of ' + process.env.EVN_CONFIG+ ' mode...' )
spinner.start()
 
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
  if (err) throw err
  webpack(webpackConfig, (err, stats) => {
    spinner.stop()
    if (err) throw err
    process.stdout.write(stats.toString({
      colors: true,
      modules: false,
      children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
      chunks: false,
      chunkModules: false
    }) + '\n\n')
 
    if (stats.hasErrors()) {
      console.log(chalk.red('  Build failed with errors.\n'))
      process.exit(1)
    }
 
    console.log(chalk.cyan('  Build complete.\n'))
    console.log(chalk.yellow(
      '  Tip: built files are meant to be served over an HTTP server.\n' +
      '  Opening index.html over file:// won\'t work.\n'
    ))
  })
})

修改build/webpack.prod.conf.js,注釋const env = require('../config/prod.env') 新增如下代碼

const env = config.build[process.env.EVN_CONFIG+'Env']

修改package.json,build:test打包測試環(huán)境根资,build:prod打包正式環(huán)境

"scripts": {
  "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
  "build:test": "cross-env NODE_ENV=production EVN_CONFIG=test node build/build.js",
  "build:prod": "cross-env NODE_ENV=production EVN_CONFIG=prod node build/build.js"
 },

運行打包命令即可,如果需要輸出到不同的目錄可以參考上面修改config/index.js這一塊的代碼

測試環(huán)境:npm run build:test 
正式環(huán)境:npm run build:prod 

最后部署到線上,可以通過在頁面上打印process.env是否在不同的環(huán)境使用了不同的環(huán)境變量锡移,如果按我的步驟寫基本上是不會出問題的。有問題下方留言。

為了方便大家測試,可以打包后這樣子做。

#如果沒有安裝live-server,可以先安裝
 
npm install -g live-server
 
#然后進入你打包的那個文件夾默認是dist,打開命令行
live-server
 
會自動啟動服務欢唾,然后就能直接看到效果

以上就是vue分別打包測試環(huán)境和正式環(huán)境的方法了
如果這篇文章對你有幫助肩刃,或者在進行中遇到其他問題沸呐,歡迎評論區(qū)留言出來崭添。
我們一起探討~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市叛氨,隨后出現(xiàn)的幾起案子呼渣,更是在濱河造成了極大的恐慌,老刑警劉巖寞埠,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屁置,死亡現(xiàn)場離奇詭異,居然都是意外死亡畸裳,警方通過查閱死者的電腦和手機缰犁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門淳地,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怖糊,“玉大人帅容,你說我怎么就攤上這事∥樯耍” “怎么了并徘?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扰魂。 經(jīng)常有香客問我麦乞,道長,這世上最難降的妖魔是什么劝评? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任姐直,我火速辦了婚禮,結果婚禮上蒋畜,老公的妹妹穿的比我還像新娘声畏。我一直安慰自己,他們只是感情好姻成,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布插龄。 她就那樣靜靜地躺著,像睡著了一般科展。 火紅的嫁衣襯著肌膚如雪均牢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天才睹,我揣著相機與錄音徘跪,去河邊找鬼。 笑死琅攘,一個胖子當著我的面吹牛真椿,可吹牛的內容都是我干的。 我是一名探鬼主播乎澄,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼突硝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了置济?” 一聲冷哼從身側響起解恰,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浙于,沒想到半個月后护盈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡羞酗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年腐宋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡胸竞,死狀恐怖欺嗤,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情卫枝,我是刑警寧澤煎饼,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站校赤,受9級特大地震影響吆玖,放射性物質發(fā)生泄漏。R本人自食惡果不足惜马篮,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一沾乘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浑测,春花似錦意鲸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漱贱,卻和暖如春槐雾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幅狮。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工募强, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人崇摄。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓擎值,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逐抑。 傳聞我的和親對象是個殘疾皇子鸠儿,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容