【问题标题】:Pass config variables from package.json to Browserify将 package.json 中的配置变量传递给 Browserify
【发布时间】:2015-08-10 20:05:49
【问题描述】:

是否可以将 package.json 变量的“配置”部分中定义的内容传递给 browserify?一切都从“脚本”部分运行,例如:

"config": {
    "API": "somePathToAPI",
    "port": 9999
},
"scripts": {
    "prewatch:js": "browserify app/js/app.js -o out/bundle.js -d",
    "watch:js": "watchify app/js/app.js -o out/bundle.js -v -d",
    "start": "npm run watch:js"
}...

这个想法是将 API 和端口变量都传递给 Browserifys 环境(例如可从窗口对象访问的 proccess.argv 或 process.env 属性)。

我不确定它是否重要,但我尝试在 Windows 7 机器上实现这一点。

或者这种方法是错误的,您使用其他一些技术来存储您的配置变量?

【问题讨论】:

    标签: node.js browserify package.json


    【解决方案1】:

    package.json 中的所有值都会导出到环境中。变量名应为$npm_package_config_API$npm_package_config_port

    您可以通过运行npm run env 查看所有导出的变量。 (根据您的npm 版本,您可能需要自己添加env 脚本:"scripts": { "env": "env" }

    您甚至可以覆盖脚本中的变量,方法是在它们前面加上您的包名称和变量名称。在此处查看示例:NPM Config Variables

    您可能还想查看Per-Package Config Settings

    如果您只是在寻找一种转换以在代码中将环境保持为文字,请查看 envify

    【讨论】:

    • 在 npm 脚本中使用 $ 前缀作为变量(例如 $npm_package_...)仅适用于基于 linux 的环境。相反,在 Windows 上,需要一个 `%~,例如%npm_package_...%.要支持这两种操作系统类型,请使用run-script-os
    【解决方案2】:

    没有办法在客户端 js 代码中访问它们,但在服务器端代码中:

    var port = process.env.npm_package_config_port;
    var api = process.env.npm_package_config_API;
    

    编辑:您可以使用 portAPI 服务器端创建一个 cookie 并将其发送到客户端。

    【讨论】:

    • 哎呀,我还以为有办法呢。我注意到 Browserfiy 中的一些高级标志,例如“--insert-global-vars”或“--detect-globals”,但我不适合我:-/
    猜你喜欢
    • 2018-10-08
    • 2020-03-13
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2018-10-21
    • 2013-11-08
    • 1970-01-01
    相关资源
    最近更新 更多