首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >package.json中多个任务的一个前置任务

package.json中多个任务的一个前置任务
EN

Stack Overflow用户
提问于 2017-04-28 19:51:53
回答 2查看 1.6K关注 0票数 21

我正在为一个项目使用Terraform,在我的package.json中有两个任务来启动terraform planterraform apply

代码语言:javascript
复制
"scripts": {
    "tf:apply": "terraform apply",
    "tf:plan": "terraform plan"
}

对于这两个命令,我需要首先执行一个terraform get。我希望他们两个都只有一个pretask

我试着使用:

代码语言:javascript
复制
"scripts": {
    "pretf:*": "terraform get",
    "tf:apply": "terraform apply",
    "tf:plan": "terraform plan"
}

但它不起作用。

有什么方法可以使用NPMYarn only来实现这一点吗?或者我被迫为这两个任务编写完全相同的前置任务?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-06 20:26:40

我通常是这样的:

代码语言:javascript
复制
"scripts": {
    "tf:get": "terraform get",
    "tf:apply": "npm run tf:get && terraform apply",
    "tf:plan": "npm run tf:get && terraform plan"
}

这是另一种选择,它伪装成一种"tf:*"预钩。仅适用于晦涩神秘的npm忍者,不推荐使用:

代码语言:javascript
复制
"scripts": {
    "pretf": "terraform get",
    "tf": "terraform",
    "tf:apply": "npm run tf -- apply",
    "tf:plan": "npm run tf -- plan"
}

(与npm run tf:plan一起使用或直接与任何参数npm run tf -- whathever一起使用)

票数 7
EN

Stack Overflow用户

发布于 2017-05-05 06:30:55

您是否尝试过使用node直接管理它?

您可以将package.json中的事件直接绑定到节点脚本,并在节点脚本中以这种方式执行您的terraform命令和常见代码:

代码语言:javascript
复制
var exec = require('child_process').exec;
var cmd = 'terraform apply';

// common code

exec(cmd, function(error, stdout, stderr) {
  // command output is in stdout
});

您也可以只使用一个接受参数的单节点脚本来指定要执行的terraform任务,在脚本中定义通用代码,然后根据参数执行正确的命令:

代码语言:javascript
复制
"scripts": {
    "tf:apply": "node myscript.js --param=apply",
    "tf:plan": "node myscript.js --param=plan"
}

然后在node内部,你可以这样访问你的参数:

代码语言:javascript
复制
console.log(process.argv.param);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43679545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档