gpt4 book ai didi

json - Node 包 - 是否可以在 package.json 中插入变量?

转载 作者:搜寻专家 更新时间:2023-10-31 22:32:11 24 4
gpt4 key购买 nike

我有一个使用 node-sass 编译 Sass 的静态站点。

目前我正在使用 Grunt 来查看文件,但我觉得这有点过分了,因为我可以使用他们内置的 CLI。

所以我将其添加到我的 package.json 中:

// package.json
...
"scripts": {
"sass": "node-sass -w input/dir -o output-dir/"
}

问题是,我需要在--include-pathrequire 一个Sass 框架模块(全局安装)。我可以在 Gruntfile 中这样做:

// Gruntfile.js
sass: {
options: {
includePaths: require("the-framework").includePaths()
},
...
},

所以我首先想到的是像这样插入字符串:

// package.json
...
"scripts": {
"sass": "node-sass -w input/dir -o output-dir/ --include-path " + require("the-framework").includePaths()
}

正如预期的那样,它不起作用。脚本运行良好,但插值变量被忽略。

任何解决方案或替代方案?如果可能的话,我宁愿不创建额外的文件只是为了存储变量。

谢谢

最佳答案

我不知道这样做是否正确,但我可以解释我将如何解决这个任务。

您不能在 package.json 中插入变量,因为它必须是有效的 json。您可以在此处编写 bash 命令。

1) 您可以编写需要结果的 Node 命令。如果 includePaths() 不返回字符串,您应该小心。

Node options:
-e, --eval script evaluate script
-p, --print evaluate script and print result

所以它会是这样的

node -e "console.log(require('the-framework').includePaths())"

或使用 --print 的较短版本

node -p "require('the-framework').includePaths()"

2) 将先前命令的输出内联到 sass 脚本中。注意右转义。

{
"scripts": {
"sass": "node-sass -w input/dir -o output-dir/ --include-path $(node -p \"require('the-framework').includePaths()\")"
}
}

有关执行 bash 命令的更多信息,您可以找到 here .

附言Windows 版本不同

{
"scripts": {
"sass": "FOR /f \"delims=\" %v IN ('node -p \"require('edje').includePaths()[0]\"') DO node-sass -w assets/sass -o assets/css --include-path \"%v\""
}
}

更多信息你可以找到here .

关于json - Node 包 - 是否可以在 package.json 中插入变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com