有没有一种方法可以使用ecmascript模块文件作为使用package.json bin条目导出的cli的主入口文件?
我想我需要以某种方式提供--实验性模块标志,但如果不将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作为可执行文件进行安装,这样就不可能将任何命令行标志传递给节点进程(请参阅我无法使用的回答 )。
edit2:我想我应该在这里留下一个指向相关库的链接-- @魔术/cli,这是我当前的方法(我包括一个bin.js文件,该文件child_process.spawns是一个mjs文件)
发布于 2020-02-07 22:10:29
节点13默认启用--experimental-modules,因此#!/usr/bin/env node就足够了。不过,仍会发出警告。
(node:23260) ExperimentalWarning: The ESM module loader is experimental.
发布于 2019-05-15 04:27:41
您可以安装esm模块,然后在运行代码时要求它,即可以使用-r esm代替--experimental-modules。然后以node -r esm bin.mjs的形式运行您的代码。
https://stackoverflow.com/questions/56140345
复制相似问题