UNPKG

1.53 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = loadEnv;
7
8var _utils = require("@parcel/utils");
9
10var _dotenv = _interopRequireDefault(require("dotenv"));
11
12var _dotenvExpand = _interopRequireDefault(require("dotenv-expand"));
13
14function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
16async function loadEnv(env, fs, filePath) {
17 var _env$NODE_ENV;
18
19 const NODE_ENV = (_env$NODE_ENV = env.NODE_ENV) !== null && _env$NODE_ENV !== void 0 ? _env$NODE_ENV : 'development';
20 const dotenvFiles = ['.env', // Don't include `.env.local` for `test` environment
21 // since normally you expect tests to produce the same
22 // results for everyone
23 NODE_ENV === 'test' ? null : '.env.local', `.env.${NODE_ENV}`, `.env.${NODE_ENV}.local`].filter(Boolean);
24 let envs = await Promise.all(dotenvFiles.map(async dotenvFile => {
25 const envPath = await (0, _utils.resolveConfig)(fs, filePath, [dotenvFile]);
26
27 if (envPath == null) {
28 return;
29 } // `ignoreProcessEnv` prevents dotenv-expand from writing values into `process.env`:
30 // https://github.com/motdotla/dotenv-expand/blob/ddb73d02322fe8522b4e05b73e1c1ad24ea7c14a/lib/main.js#L5
31
32
33 let output = (0, _dotenvExpand.default)({
34 parsed: _dotenv.default.parse((await fs.readFile(envPath))),
35 ignoreProcessEnv: true
36 });
37
38 if (output.error != null) {
39 throw output.error;
40 }
41
42 return output.parsed;
43 })); // $FlowFixMe
44
45 return Object.assign({}, ...envs);
46}
\No newline at end of file