我可以链接npmconfiguration条目吗?
使用npm
config
部分很简单,很酷,但是我遇到了一个限制:一个configuration项不能被扩展,所以不能链接它们,甚至不能访问非configuration值saconfiguration文件。
样品:
{ "name": "myproj", "version": "0.1.2", "//": "Here, '$npm_package_version' is not expanded", "config": { "target": "dist/myproj-$npm_package_version.js" }, "scripts": { "echo": "echo $npm_package_config_target", } }
这给了:
dist/myproj-$npm_package_version.js
代替:
dist/myproj-0.1.2.js
有什么我可以做的吗? 像这样的链接值是一个有用的function – 我很惊讶nom
不这样做。 有没有理由不?
参考文献:
- Node.js:如何为prod和staging设置不同的variables
- 如何使用npm作为构build工具
有几种方法可以处理。
最简单的方法可能只是评估string
{ "name": "myproj", "version": "0.1.2", "config": { "target": "dist/myproj-$npm_package_version.js" }, "scripts": { "echo": "eval echo $npm_package_config_target" } }
如果你对eval不太熟悉,那么你可以在脚本中手动连接string:
{ "name": "myproj", "version": "0.1.2", "config": { "target_prefix": "dist/myproj-", "target_suffix": ".js" }, "scripts": { "echo": "echo $npm_package_config_target_prefix$npm_package_version$npm_package_config_target_suffix", } }
或者你可以不使用npms config
,而是写一个快速的脚本,可以与其他人合成:
{ "name": "myproj", "version": "0.1.2", "scripts": { "config:target": "echo dist/myproj-$npm_package_version.js", "echo": "echo $(npm run config:target)" } }