我试图构建一个package.json,以便在Heroku上运行NodeJS应用程序时,它将使用环境变量运行scripts.postinstall步骤。例如:是否有可能在npm/package.json中使用环境变量?
...
"scripts": {
"postinstall": "command $ENV_VAR"}
},
...
我已经看过了docs,没能找到的东西说我可以。
这甚至可能吗?这甚至是可取的和“我做错了吗?”?
我试图构建一个package.json,以便在Heroku上运行NodeJS应用程序时,它将使用环境变量运行scripts.postinstall步骤。例如:是否有可能在npm/package.json中使用环境变量?
...
"scripts": {
"postinstall": "command $ENV_VAR"}
},
...
我已经看过了docs,没能找到的东西说我可以。
这甚至可能吗?这甚至是可取的和“我做错了吗?”?
回答最后一个问题,因为它们是最重要的问题:是的,不是,绝对是因为您刚刚破坏了跨平台兼容性。不能保证你的环境语法适用于所有操作系统上的所有shell,所以不要这样做。
我们已经向我们提供了有保证的跨平台技术:节点。因此,创建一个名为bootstrap.js
的文件,然后将npm运行node bootstrap
作为您的安装后脚本。由于bootstrap.js
中的代码将像其他任何节点脚本一样运行,因此它将以完全跨平台兼容的方式访问process.env
,并且每个人都会很开心。
还有许多,使用通用utils的有节点等价,这样你就可以npm
安装它们,本地而不是全局的,然后再打电话给他们在NPM剧本很多,很多事情。例如mkdir -p
不是跨平台的,但安装mkdirp
模块,然后当为npm run ensuredirs
为方便起见,运行像"ensuredirs": "mkdirp dist/assets"
的NPM脚本正常工作到处,最常见的UNIX工具都有自己的亚军包,shx,这是完全跨平台的,并使开发人员的生活更容易。
忽略可笑的人。你可以用跨平台的方式使用cross-var
:
"scripts": {
"postinstall": "cross-var command $ENV_VAR"
}