12345678910111213141516171819202122232425262728293031323334353637383940 |
- 'use strict';
- const fs = require('fs');
- const path = require('path');
- const appRoot = require('app-root-dir');
- const dotenv = require('dotenv');
- const dotenvExpand = require('dotenv-expand');
- const dotEnvBase = path.join(appRoot.get(), ".env");
- function getEnvironment({ nodeEnv, buildTarget } = {}) {
- let raw = {};
- const stringified = {};
- const webpack = { "process.env": stringified };
- const NODE_ENV = typeof nodeEnv === "undefined" ? process.env.NODE_ENV : nodeEnv;
- const BUILD_TARGET = typeof nodeEnv === "undefined" ? process.env.BUILD_TARGET : buildTarget;
- const dotenvFiles = [
- BUILD_TARGET && NODE_ENV && `${dotEnvBase}.${BUILD_TARGET}.${NODE_ENV}.local`,
- BUILD_TARGET && NODE_ENV && `${dotEnvBase}.${BUILD_TARGET}.${NODE_ENV}`,
- BUILD_TARGET && NODE_ENV !== "test" && `${dotEnvBase}.${BUILD_TARGET}.local`,
- BUILD_TARGET && `${dotEnvBase}.${BUILD_TARGET}`,
- NODE_ENV && `${dotEnvBase}.${NODE_ENV}.local`,
- NODE_ENV && `${dotEnvBase}.${NODE_ENV}`,
- NODE_ENV !== "test" && `${dotEnvBase}.local`,
- dotEnvBase
- ].filter(Boolean);
- dotenvFiles.forEach((dotenvFile) => {
- if (fs.existsSync(dotenvFile)) {
- const config = dotenv.config({
- path: dotenvFile
- });
- raw = Object.assign({}, raw, dotenvExpand.expand(config).parsed);
- }
- });
- Object.keys(raw).forEach((key) => {
- stringified[key] = JSON.stringify(raw[key]);
- });
- return { raw, stringified, webpack };
- }
- exports.getEnvironment = getEnvironment;
|