【问题标题】:Will env. vars affect imports from node_modules?将环境。 vars 会影响从 node_modules 的导入吗?
【发布时间】:2016-11-20 04:44:58
【问题描述】:

我正在从我的项目中提取一些实用功能到npm modules,以便我可以在其他项目中使用它们。

其中一些函数依赖于API Keys,并为DEVPROD 环境使用不同的API Keys

在主项目中,这不是问题,因为我的build 进程正确设置了environment vars,而我的webpack build 进程在源代码中生成了正确的keys

如果我在npm modules 中包含API Keys 和相同的DEV | PROD 三元组,那么主项目的environment vars 对模块的工作方式是否与它们在主项目中对代码的工作方式相同项目?

// mymodule/index.js
export default function() {
  return __PROD__ === true ? "abc" : "123"
  // ....
}

// project/index.js in __DEV__ environment
import getKey from 'my-module'

getKey() // should return "123"

【问题讨论】:

    标签: node.js npm webpack


    【解决方案1】:

    我可能误解了您的问题,但您使用的不是环境变量。它们可能是你用 Webpack 的DefinePlugin 填写的变量,比如

    new webpack.DefinePlugin({
        __PROD__: true
    })
    

    当 Webpack 编译你的代码时,插件会自动将这些神奇的全局变量替换为配置文件中的值。

    在节点中使用环境变量的正确方法是process.env,如process.env.__PROD__,并使用__PROD__=true node index.js 或更常见的约定NODE_ENV=production node index.js 运行程序。

    如果您将编译后的 Webpack 代码发布到 npm,那么它应该使用您为 npm compile Webpack 配置设置的任何 DefinePlugin 值。

    【讨论】:

      猜你喜欢
      • 2012-03-10
      • 2021-05-29
      • 2017-09-05
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 2012-05-20
      • 1970-01-01
      相关资源
      最近更新 更多