加载 ecmascript 模块(.mjs 文件)作为 nodejs cli 的主要入口
load ecmascript module (.mjs file) as main entry of nodejs cli
有没有办法将 ecmascript 模块文件用作使用 package.json bin 条目导出的 cli 的主要条目文件?
我想我需要以某种方式提供 --experimental-modules 标志,但是如果不将 mjs 文件包装到 js 文件然后通过 [= 调用 mjs 文件,我想不出一种方法来做到这一点13=]
#!/usr/bin/env node
// pseudocode
child_process.spawn(
'node',
['--experimental-modules', 'bin.mjs'],
{ stdio: 'inherit' }
)
考虑到调用 child_process.spawn 的开销,我希望能够替换我的库中的那些包装器。
编辑:
请注意,我的 cli 必须可以使用 npm i -g 安装为可执行文件,据我所知,这使得无法将任何命令行标志传递给节点进程(参见 我将无法使用)
编辑2:
我想我也应该在这里给相关的库留下一个 link @magic/cli,这是我目前的方法(我包括一个 bin.js 文件,child_process.spawn 是一个 mjs 文件)
您可以安装 esm
模块,然后在 运行 编译代码时需要它,即代替 --experimental-modules
,您可以使用 -r esm
。然后你会 运行 你的代码为 node -r esm bin.mjs
.
节点13默认启用--experimental-modules
,所以#!/usr/bin/env node
就够了。但是,仍然会发出警告。
(node:23260) ExperimentalWarning: The ESM module loader is experimental.
有没有办法将 ecmascript 模块文件用作使用 package.json bin 条目导出的 cli 的主要条目文件?
我想我需要以某种方式提供 --experimental-modules 标志,但是如果不将 mjs 文件包装到 js 文件然后通过 [= 调用 mjs 文件,我想不出一种方法来做到这一点13=]
#!/usr/bin/env node
// pseudocode
child_process.spawn(
'node',
['--experimental-modules', 'bin.mjs'],
{ stdio: 'inherit' }
)
考虑到调用 child_process.spawn 的开销,我希望能够替换我的库中的那些包装器。
编辑:
请注意,我的 cli 必须可以使用 npm i -g 安装为可执行文件,据我所知,这使得无法将任何命令行标志传递给节点进程(参见
编辑2: 我想我也应该在这里给相关的库留下一个 link @magic/cli,这是我目前的方法(我包括一个 bin.js 文件,child_process.spawn 是一个 mjs 文件)
您可以安装 esm
模块,然后在 运行 编译代码时需要它,即代替 --experimental-modules
,您可以使用 -r esm
。然后你会 运行 你的代码为 node -r esm bin.mjs
.
节点13默认启用--experimental-modules
,所以#!/usr/bin/env node
就够了。但是,仍然会发出警告。
(node:23260) ExperimentalWarning: The ESM module loader is experimental.