mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-02-09 08:28:29 -06:00
37 lines
984 B
JavaScript
37 lines
984 B
JavaScript
const fs = require('fs')
|
|
|
|
module.exports = function loadEnv (path = '.env') {
|
|
const config = parse(fs.readFileSync(path, 'utf-8'))
|
|
Object.keys(config).forEach(key => {
|
|
if (typeof process.env[key] === 'undefined') {
|
|
process.env[key] = config[key]
|
|
}
|
|
})
|
|
return config
|
|
}
|
|
|
|
function parse (src) {
|
|
const res = {}
|
|
src.split('\n').forEach(line => {
|
|
// matching "KEY' and 'VAL' in 'KEY=VAL'
|
|
const keyValueArr = line.match(/^\s*([\w\.\-]+)\s*=\s*(.*)?\s*$/)
|
|
// matched?
|
|
if (keyValueArr != null) {
|
|
const key = keyValueArr[1]
|
|
let value = keyValueArr[2] || ''
|
|
|
|
// expand newlines in quoted values
|
|
const len = value ? value.length : 0
|
|
if (len > 0 && value.charAt(0) === '"' && value.charAt(len - 1) === '"') {
|
|
value = value.replace(/\\n/gm, '\n')
|
|
}
|
|
|
|
// remove any surrounding quotes and extra spaces
|
|
value = value.replace(/(^['"]|['"]$)/g, '').trim()
|
|
|
|
res[key] = value
|
|
}
|
|
})
|
|
return res
|
|
}
|