parseEnv.js 1.1 KB

1234567891011121314151617181920212223242526
  1. const fs = require('fs');
  2. const path = require('path');
  3. const dotenv = require('dotenv'); // 解析.env.*文件为键值对,并写入环境变量。
  4. const variableExpansion = require('dotenv-expand'); // 拿到dotenv解析的参数,扩展计算机上已经存在的环境变量(存在就赋值)。
  5. const resolve = (dir) => path.join(__dirname, dir);
  6. const prefixRE = /^_SETTING_/;
  7. /*
  8. 这里加载的是development 模式文件,需要其他的可以根据启动参数来动态修改,或者NODE_ENV来修改
  9. ag:根据NODE_ENV来修改
  10. const env = variableExpansion(
  11. dotenv.parse(fs.readFileSync(resolve(`./.env.${process.env.NODE_ENV}`)))
  12. )
  13. */
  14. const env = variableExpansion(dotenv.parse(fs.readFileSync(resolve(`../.env.${process.env.NODE_ENV}`))));
  15. Object.keys(env).forEach((key) => {
  16. if (prefixRE.test(key) || key === 'NODE_ENV') {
  17. env[key] = JSON.stringify(env[key]); // JSON.stringify 的目的是为了给webpack.DefinePlugin 的值是 '"development"',DefinePlugin插件配置要求
  18. } else {
  19. Reflect.deleteProperty(env, key);
  20. }
  21. });
  22. module.exports = env;