有没有办法使用 ecmascript 模块文件作为使用 package.json bin 条目导出的 cli 的主条目文件?
我想我需要以某种方式提供 --experimental-modules 标志,但我无法找到一种方法来做到这一点,而不将 mjs 文件包装到 js 文件中,然后通过
调用 mjs 文件#!/usr/bin/env node
// pseudocode
child_process.spawn(
'node',
['--experimental-modules', 'bin.mjs'],
{ stdio: 'inherit' }
)
考虑到调用 child_process.spawn 的开销,我希望能够替换我的库中的那些包装器。
编辑: 请注意,我的 cli 必须使用 npm i -g 作为可执行文件安装,据我所知,这使得无法将任何命令行标志传递到 Node 进程(请参阅 answer 我将无法使用)
编辑2: 我想我也应该在这里留下相关库的链接 @magic/cli ,这是我当前的方法(我包括一个 bin.js 文件,child_process.spawns 一个 mjs 文件)
最佳答案
Node 13 默认启用 --experimental-modules
,因此 #!/usr/bin/env node
就足够了。但是,仍然会发出警告。
(node:23260) ExperimentalWarning: The ESM module loader is experimental.
关于javascript - 加载 ecmascript 模块(.mjs 文件)作为 Nodejs cli 的主入口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56140345/