【问题标题】:package.json script conditionalpackage.json 脚本条件
【发布时间】:2017-08-08 03:21:49
【问题描述】:

我有一个检查某些条件的节点脚本。让我们称之为condition.js。我有另一个运行我的程序的脚本,我们称之为runner.jsrunner.js 被我的package.json 文件中的一个命令引用在脚本下,condition.js 也被他们自己的命令引用。我希望condition.jsrunner.js 之前运行。如果 condition.js 在运行时某个条件为真(它检查字符串中的某些内容),我希望第二个脚本在它之后运行。如果不是真的,我不希望第二个脚本运行。我如何在package.json 中做到这一点?

【问题讨论】:

  • 编写第三个脚本,将 it 放入 package.json,然后让它相应地运行另外两个。
  • 有道理,但我不能更明确地显示两个脚本之间的关系?
  • 不,你不能。这是一个 JSON 文件——它不打算在逻辑方面做很多繁重的工作。让您的单个脚本来展示。

标签: node.js package.json


【解决方案1】:

condition.js 中,您需要使用非零退出代码exit() 节点进程。然后在您的package.json 文件中,您可以根据退出代码(零或不)检查是否执行第二个脚本:

在您的condition.js 文件中:

if (true) {  // use your actual condition
  process.exit(128);
}

那么,在你的package.json

{
  "scripts": {
    "special": "node condition.js && node runner.js"
  }
}

现在您可以从命令行运行npm run specialrunner.js 文件只有在condition.js 以零代码退出时才会运行(如果节点执行正常结束,这是默认值)。

【讨论】:

  • 对我不起作用。每当从 condition.js 返回非零退出代码时,整个 npm 进程都会失败。
  • @bar 是的,这就是&& 的意思...您可以更改此代码以忽略上一条语句的结果,如下所示:node condition.js; node runner.js
  • 当然,但是忽略condition.js 的结果会破坏目的,不是吗??
  • 我真的被你的 cmets 弄糊涂了。 condition.js 的全部意义在于如果 npm run special 返回非零退出代码,则有意停止它。这就是它的真正目的。太好了……听起来它确实对你有用,但你想要别的东西吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 2020-08-31
  • 1970-01-01
  • 2018-05-24
  • 2014-06-26
  • 1970-01-01
相关资源
最近更新 更多