如何将node命令行选项传递给npm可执行文件?

6

有人知道是否可以直接将node命令行选项(例如--expose-gc)传递给npm可执行文件吗?

我有一个构建可执行文件的node模块(请参见此处)。我希望该可执行文件能够访问global.gc()。为了做到这一点,您需要使用--expose-gc标志启动您的node进程。

我可以强制用户将我的可执行文件包装在node命令周围,但那么我为什么还需要一个可执行文件呢?你有什么想法吗?

1个回答

1
假设你的可执行文件名为ex。首先,在命令行上执行chmod a+x ex,确保它是可执行的。接下来,确保ex文件以如下一行开头:
#! /usr/bin/env node --expose-gc

env(1) 会在你的路径中找到 Node 可执行文件,并使用给定的参数运行它,由于行首的 #! "shebang",将 ex 的内容传递到该进程的 stdin 中。

请使用 ex./bin/ex(例如),而不是 node ex 来运行您的程序。


将“--expose-gc”添加到scratchbang会引发以下错误:/usr/bin/env: node --expose-gc: 没有这个文件或目录。您确定我们可以在scratchbang上传递命令行参数吗? - CBP
这个确实有效。最初我无法使用它,因为我们公司的节点设置非常疯狂,是通过docker作为别名运行的。感谢@Joe Hildebrand的帮助!我知道我的可执行文件可以运行,这不是我的问题。如果有人在这里遇到问题,关键是要将命令行选项添加到scratchbang中!! - CBP
如果您没有创建 ex,该怎么办?这是典型情况。例如,运行mocha、typescript等。 - Daniel Kaplan
您可以通过设置 NODE_OPTIONS 环境变量来传递节点运行时命令行参数。例如,NODE_OPTIONS="--expose-gc" ex。请参阅 https://nodejs.org/dist/latest-v18.x/docs/api/cli.html#node_optionsoptions。 - Joe Hildebrand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接