从 NPM Script 获取标准输出到一个变量

Get stdout from NPM Script into a variable

我有这个节点脚本解析 .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\""
}

谢谢!

而不是这个:

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"
}

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