4

我有这个解析 .YAML 并输出一个名为版本的字段的节点脚本

node node/getAssetsVersion.js
=> "2.1.2"

我正在尝试将该标准输出转换为变量并在 NPM 脚本中使用它

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

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

谢谢!

4

1 回答 1

2

而不是这个:

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

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

于 2017-04-07T18:15:33.990 回答