kopia lustrzana https://github.com/inkstitch/inkstitch
40 wiersze
1.1 KiB
JavaScript
40 wiersze
1.1 KiB
JavaScript
'use strict'
|
|
|
|
const path = require('path')
|
|
const dotenv = require('dotenv')
|
|
const dotenvExpand = require('dotenv-expand')
|
|
const { error } = require('./logger')
|
|
|
|
module.exports = function loadEnv(mode) {
|
|
const basePath = path.resolve(process.cwd(), `.env${mode ? `.${mode}` : ``}`)
|
|
const localPath = `${basePath}.local`
|
|
|
|
const load = (envPath) => {
|
|
try {
|
|
const env = dotenv.config({ path: envPath, debug: process.env.DEBUG })
|
|
dotenvExpand.expand(env)
|
|
} catch (err) {
|
|
// only ignore error if file is not found
|
|
if (err.toString().indexOf('ENOENT') < 0) {
|
|
error(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
load(localPath)
|
|
load(basePath)
|
|
|
|
// by default, NODE_ENV and BABEL_ENV are set to "development" unless mode
|
|
// is production or test. However the value in .env files will take higher
|
|
// priority.
|
|
if (mode) {
|
|
const defaultNodeEnv = mode === 'production' || mode === 'test' ? mode : 'development'
|
|
if (process.env.NODE_ENV == null) {
|
|
process.env.NODE_ENV = defaultNodeEnv
|
|
}
|
|
if (process.env.BABEL_ENV == null) {
|
|
process.env.BABEL_ENV = defaultNodeEnv
|
|
}
|
|
}
|
|
}
|