Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 角度:带有参数的npm脚本_Node.js_Npm_Angular Cli_Package.json_Npm Scripts - Fatal编程技术网

Node.js 角度:带有参数的npm脚本

Node.js 角度:带有参数的npm脚本,node.js,npm,angular-cli,package.json,npm-scripts,Node.js,Npm,Angular Cli,Package.json,Npm Scripts,我的package.json中有几个npm脚本,如下所示: “脚本”:{ “服务印度本地”:“ng服务——亲印度项目-c本地”, “服务印度雄鹿”:“ng服务——亲印度项目-c雄鹿”, “服务印度产品”:“ng服务——亲印度项目-c产品”, ... } 巴西也是如此 “脚本”:{ ... “服务巴西本地”:“ng服务——亲巴西项目-c本地”, “服务巴西雄鹿”:“ng服务——亲巴西项目-c雄鹿”, “服务巴西产品”:“ng服务——亲巴西项目-c产品” } 同样,我可以为不同的国家/地区和配置

我的package.json中有几个npm脚本,如下所示:

“脚本”:{
“服务印度本地”:“ng服务——亲印度项目-c本地”,
“服务印度雄鹿”:“ng服务——亲印度项目-c雄鹿”,
“服务印度产品”:“ng服务——亲印度项目-c产品”,
...
}
巴西也是如此

“脚本”:{
...
“服务巴西本地”:“ng服务——亲巴西项目-c本地”,
“服务巴西雄鹿”:“ng服务——亲巴西项目-c雄鹿”,
“服务巴西产品”:“ng服务——亲巴西项目-c产品”
}
同样,我可以为不同的国家/地区和配置提供更多的脚本

我想将其简化为一个脚本,在该脚本中,我只需要2个参数:

  • countryName
  • config
最后的脚本应该是这样的:

“服务印度产品”:“ng服务——项目pro-$countryName-c$config”


有人能帮我实现这一点吗?

您可以使用shell变量轻松实现这一点

scripts
下的
package.json
中,包括您的npm脚本 比如说

{ 
    "scripts":{
     "serve-prod": "ng serve --project pro-$countryName -c $config"
    }
}
在cli中作为
countryName=india config=local npm run service prod


这在跨平台的情况下不会很好地工作,但您可以使用或

您可以通过shell变量轻松完成这一点

scripts
下的
package.json
中,包括您的npm脚本 比如说

{ 
    "scripts":{
     "serve-prod": "ng serve --project pro-$countryName -c $config"
    }
}
在cli中作为
countryName=india config=local npm run service prod

这在跨平台情况下不太适用,但您可以使用或

这在*nix平台上很有用npm使用
sh
作为默认shell,因此您可以将npm脚本包装在shell函数中并引用两个参数(即
countryName
config
)使用
$1
$2
位置参数。但是,如果您想要一个跨平台的解决方案(即一个也适用于Windows
cmd
shell的解决方案),那么您需要使用node.js助手脚本。请参阅我的答案以进一步了解;使用*nix shell函数,您的npm脚本可以定义为:
“serve”:“func(){ng serve--project\“pro-${1}\”-c\“${2}\”;};func”
。然后调用命令,例如
npm run serve brazil prod
npm run serve india local
等。还可以为
$1
$2
位置参数提供。例如,如果将npm脚本更改为:
“serve”:“func(){ng serve--project\'pro-${1:-india}\”-c\“${2:-prod}\”;};func”
。现在,如果您在不带任何参数的情况下运行命令来调用npm脚本,例如
npm run serve
,它将默认为
pro india
prod
。但是,当您使用参数(例如
npm run serve brazil prod
)运行命令时,它将使用
pro brazil
prod
。这在*nix平台上非常有用。npm使用
sh
作为默认shell,因此您可以将您的npm脚本包装在shell函数中并引用这两个参数(即
countryName
config
)使用
$1
$2
位置参数。但是,如果您需要跨平台解决方案(即也适用于Windows
cmd
shell的解决方案)然后您需要使用node.js帮助程序脚本。请参阅我的答案以进一步了解。例如,使用*nix shell函数,您的npm脚本可以定义为:
“serve”:“func(){ng serve--project\“pro-${1}\”-c\“${2}\”;};func”
。然后调用命令,例如
npm run serve brazic prod
npm run serve india local
等。您还可以为
$1
$2
位置参数提供一个。例如,如果您将npm脚本更改为:
“service”:“func(){ng serve--pro pro pro pro-${1:-india}\-c\”${2:-prod}\“;};func”
。现在,如果您在不带任何参数(例如
npm run serve
的情况下运行命令来调用npm脚本,它将默认为
pro india
prod
。但是当您使用参数(例如
npm run serve brazil prod
运行命令时,它将使用
pro brazil
prod
)。