我有这个节点脚本解析.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\""
}
谢谢!
答案 0 :(得分: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"
}
我会避免任何多次转义的报价。