我想确定我的package.json一个scripts
项简化构建好环境。
在脚本执行我需要一个参数,我想传递给$1
例如像npm run build-script
或者更简单,--env=prod
更换--prod
(或任何语法我需要一个占位符)。我怎样才能做到这一点?我发现这里的其他问题和回答没有帮助我解决问题。
"scripts": {
"build-for": "ng build --output-path=../../web/admin-v2 --env=$1 --base-href=\"/admin-v2/\""
}
我常常借助于创建为这种情况的公用事业节点的脚本,并通过scripts
的package.json
部分调用它。
集结for.js
var nodeCLI = require('shelljs-nodecli');
var env = '--env=foo'; // <-- Default env flag/value when no arg provided.
if (process.argv.indexOf('--prod') !== -1) {
env = '--env=prod';
}
// Check for other possible env values
if (process.argv.indexOf('--quux') !== -1) {
env = '--env=quux';
}
// Run the ng build command
nodeCLI.exec('ng', 'build', '--output-path=../../web/admin-v2', env, '--base-href=\"/admin-v2/\"');
build-for.js
利用节点process.argv以确定通过CLI传递的参数/标志,然后调用ng
命令使用package.json
(目前在shelljs-nodecli定义的)。
npm i -D shelljs-nodecli
让我们假设build-for.js
保存到你的项目的根目录名为.scripts
一个隐藏文件夹;然后scripts
你package.json
部分将被定义如下:
的package.json
{
...
"scripts": {
"build-for": "node ./.scripts/build-for"
},
...
}
运行脚本
通过运行调用脚本故宫:
npm run build-for -- --prod
注意特殊--
之前必须包含参数--prod
作为解释here
作为[email protected]的,你可以在执行脚本时使用自定义的参数。特别选项 - 时使用的getopt界定选项的结束。故宫将通过所有参数的后 - 直接到你的脚本:
鉴于目前在build-for.js
逻辑 - 当没有传递参数,例如:
npm run build-for
...的env
标志将被设置为--env=foo
运行以下:
npm run build-for -- --quux
......将导致env
标志将被设置为--env=quux
警告
我还没有完全测试build-for.js
,所以你可能会发现你并不需要转义双引号在下面的命令,这部分'--base-href=\"/admin-v2/\"'
(nodeCLI
可以处理,对你。):
// Run the ng build command
nodeCLI.exec('ng', 'build', '--output-path=../../web/admin-v2', env, '--base-href=\"/admin-v2/\"');
你要找不正是对,但你可以使用环境变量与在线为他们提供:
的package.json脚本:"<script>": "echo ${ENV1} ${ENV2}"
像下面这样运行:ENV1=a ENV2=b npm run <script>
$ npm run <script>
a b