【发布时间】:2017-09-28 01:08:22
【问题描述】:
在 package.json 中有一个我非常想念的 maven 功能。在 maven .pom 文件中,您可以在父项目中定义变量并在子项目的 pom 文件中使用它们。
在 npm 中有这样的东西吗?我们正在构建模块化项目,我想集中定义依赖版本,并将它们用于各自的 package.json 文件中。
谢谢
【问题讨论】:
在 package.json 中有一个我非常想念的 maven 功能。在 maven .pom 文件中,您可以在父项目中定义变量并在子项目的 pom 文件中使用它们。
在 npm 中有这样的东西吗?我们正在构建模块化项目,我想集中定义依赖版本,并将它们用于各自的 package.json 文件中。
谢谢
【问题讨论】:
package.json 中的任何属性都可以从脚本中引用,在其前面加上 $npm_package 并为每个嵌套级别添加 _<prop>(下划线 + 属性)。
例子:
{
"name": "appname",
"version": "0.0.1"
}
在这里,name 可以访问如下:
Linux/Mac:$npm_package_name 或 ${npm_package_name}
Windows:%npm_package_name%
并且,version 可以通过如下方式访问:
Linux/Mac:$npm_package_version 或 ${npm_package_version}
Windows:%npm_package_version%
【讨论】:
%npm_package_name%。
copy ../foo/web-$npm_package_version_SNAPSHOT(我需要以某种方式分别将变量与之前/之后的固定部分粘合在一起,因为_SNAPSHOT 是固定的文本,而我要使用的 package.json 版本是动态的...)
copy ../foo/web-${npm_package_version}_SNAPSHOT
Invalid vscode engine compatibility version '^${npm_package_config_min_vscode}' 这个扩展至少有一个地方不起作用
我花了一段时间才发现我的错误:
我在你必须使用的 powershell 上运行
$env:npm_package_name 或 ${env:npm_package_name}
在那里访问变量。
【讨论】:
在 package.json 中定义一个配置对象:
{
"name" : "myapp",
"config" : { "port" : "3000" },
...
}
然后你可以使用$npm_package_config_port从脚本对象访问端口值
{
"name" : "myapp",
"config" : { "port" : "3000" },
"scripts": {
"start" : "node --harmony app.js $npm_package_config_port"
},
...
}
源全文在这里:
http://www.marcusoft.net/2015/08/npm-scripting-configs-and-arguments.html#npm-configuration
【讨论】:
在 Windows 上,您应该使用 %variable_name%。例如:
{
"name": "app_name",
"version": "1.0.0",
"custom": {
"key": "any value"
}
}
您可以使用%npm_package_name%、%npm_package_version% 和%npm_package_custom_key% 获取它。
【讨论】: