Vue CLI - 環境變數&模式
今天用 Vue CLI 建置了一個 project,發現放置環境變數的 config 目錄不見了,也找不到 .env 之類的檔案。參考了官方文件,順便做一下筆記。
Modes and Environment Variables
https://cli.vuejs.org/guide/mode-and-env.html
Mode 模式
Vue CLI 有三種模式:development, test, production
舊版 package.json
# 這是之前舊版 Vue CLI 產生的 package.json
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
"start": "npm run dev",
"build": "node build/build.js"
},
舊版環境文件
# dev.env.js
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
APIPATH: '"https://vue-course-api.hexschool.io"',
CUSTOMPATH: '"ur_will_kome"'
// NODE_ENV: '"development"',
// API_PATH: '"https://vue-course-api.hexschool.io"',
// CUSTOM_PATH: '"ur_will_kome"'
})
現行版本的 package.json
"scripts": {
"serve": "vue-cli-service serve", # 預設使用 development
"build": "vue-cli-service build", # 在 build 時會使用 production 環境文件 (.env, .env.production, .env.production.local 等)
},
Vue CLI 有三種模式:development, test, production,不同模式下會使用不同的環境文件。
development is used by
vue-cli-service serve
test is used byvue-cli-service test:unit
production is used byvue-cli-service build
andvue-cli-service test:e2e
環境變數
只要在根目錄下加入環境文件即可。命名方式如下:
# 環境文件
.env.env # loaded in all cases
.env.local # loaded in all cases, ignored by git
.env.[mode] # only loaded in specified mode
.env.[mode].local # only loaded in specified mode, ignored by git
如果後方有加上 .local 則不會上傳到 git,在 local 端的環境文件都會被忽略。
## .gitignore
# local env files
.env.local
.env.*.local
NODE_ENV: '"development"',
API_PATH: '"https://www.example.com/api/"'
之前的寫法跟現在不太一樣。
目前環境文件使用 key=value
組成,斷行不需要用,
也不用 quotation (用單引號跟雙引號去包起來)
NODE_ENV=development
VUE_APP_TITLE=我是環境文件
VUE_API_PATH=https://www.abcdefg.com/api/
** 如果要在程式裡使用到環境變數,變數命名需要以 VUE_APP
開頭
使用環境變數
console.log(process.env.VUE_APP_TITLE) // => 我是環境文件
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。