【问题标题】:Get stdout from NPM Script into a variable从 NPM 脚本获取标准输出到变量中
【发布时间】:2017-09-03 04:13:22
【问题描述】:

我有一个解析 .YAML 并输出名为 version

的字段的节点脚本
node node/getAssetsVersion.js
=> "2.1.2"

我正在尝试将 stdout 放入一个变量中并在 NPM 脚本中使用它

这就是我在 package.json 中尝试做的事情:

"scripts": {
   "build": "cross-env VERSION=\"$(node node/getAssetsVersion.js)\" \"node-sass --include-path scss src/main.scss dist/$VERSION/main.css\""
}

谢谢!

【问题讨论】:

  • 有什么问题?
  • 那么这里有什么不工作的地方?

标签: node.js bash npm sass npm-scripts


【解决方案1】:

而不是这个:

VERSION=\"$(node node/getAssetsVersion.js)\" 

您可能需要使用:

VERSION=\"$(node node/getAssetsVersion.js | cut -d'\"' -f2)\"

如果你的程序的输出是你在问题中写的:

=> "2.1.2"

如果只是这样:

"2.1.2"

那么上述方法仍然有效,但您可以使用更简单的命令:

VERSION=$(node node/getAssetsVersion.js)

没有引号。

但在后面的部分中,$VERSION 可能不会像您预期的那样被替换。

既然您用bash 标记了您的问题,我建议您编写一个 Bash 脚本:

#!/bin/bash
VERSION=$(node node/getAssetsVersion.js | cut -d'\"' -f2)
node-sass --include-path scss src/main.scss dist/$VERSION/main.css

或:

#!/bin/bash
VERSION=$(node node/getAssetsVersion.js)
node-sass --include-path scss src/main.scss dist/$VERSION/main.css

取决于 getAssetsVersion.js 的输出是什么并将其放入 package.json 中:

"scripts": {
   "build": "bash your-bash-script-name"
}

我会避免任何多次转义的引号。

【讨论】:

    猜你喜欢
    • 2011-07-05
    • 2019-04-10
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2019-03-18
    • 1970-01-01
    • 2019-02-17
    相关资源
    最近更新 更多