我在 package.json 中错过了 Maven 的一个特性。在 Maven。可以在父项目中定义变量,并在子项目的 pom 文件中使用它们。
NPM 有这样的节目吗?我们正在构建模块化项目,我想集中定义依赖版本,并在各自的 package.json 文件中使用它们。
谢谢
在 package.json 中定义一个 config 对象:
{ "name" : "myapp", "config" : { "port" : "3000" }, ... }
然后,您可以访问端口值从脚本对象与 $npm_package_config_port
$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
可以从脚本中引用 package.json中的任何属性,在它前面加上 $npm_package,并为每个嵌套级别添加一个 _<prop>(下划线 + 属性)。
package.json
$npm_package
_<prop>
例如:
{ "name": "appname", "version": "0.0.1" }
在这里,name可以访问如下:
name
Linux/Mac: $npm_package_name或 ${npm_package_name}
$npm_package_name
${npm_package_name}
视窗: %npm_package_name%
%npm_package_name%
version的访问方式如下:
version
Linux/Mac: $npm_package_version或 ${npm_package_version}
$npm_package_version
${npm_package_version}
视窗: %npm_package_version%
%npm_package_version%
在 Windows 上,你应该使用 %variable_name%。例如:
%variable_name%
{ "name": "app_name", "version": "1.0.0", "custom": { "key": "any value" } }
你可以使用 %npm_package_name%,%npm_package_version%和 %npm_package_custom_key%得到它。
%npm_package_custom_key%
我花了很长时间才发现自己的错误:
我用的是你必须使用的强力弹药 $env:npm_package_name或 ${env:npm_package_name} 来访问变量。
$env:npm_package_name
${env:npm_package_name}
我将 package.json 文件作为变量导入到节点项目中,以获得对象结构,而不是使用 $npm _ package _ name。这将它从 JSON 转换为 JS 对象
let package = require("./package.json");
可以使用 ${npm_package_variable_attribute}内联引用带字符串的变量。
${npm_package_variable_attribute}
下面是一个将 package.json版本(${npm_package_version})作为文件名的一部分复制文件的例子:
{ "name": "appname", "version": "1.2.0", "scripts": { "upload-versioned-file": "aws s3 cp ./myfile.zip s3://my-bucket/releases/myfile-v${npm_package_version}.zip",
这将导致文件 s3://my-bucket/releases/myfile-v1.2.0.zip
s3://my-bucket/releases/myfile-v1.2.0.zip
一个适用于 Windows、 Mac OS X 和 Linux 的跨平台解决方案:
{ "name" : "myapp", "config" : { "port" : "3000" }, "scripts": { "start" : "ver && node --harmony app.js %npm_package_config_port% || node --harmony app.js $npm_package_config_port" }, ... }
解释:
上面的“ ver”命令只存在于 Windows 上,因此在 Windows 上执行“ | |”之前的第一部分,而在“ | |”之后的部分在其他平台上执行。
好好享受吧!