javascript - 加载 ecmascript 模块(.mjs 文件)作为 Nodejs cli 的主入口

标签 javascript node.js command-line-interface es6-modules mjs

有没有办法使用 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/

相关文章:

javascript - 具有 rest operator、reducer 和 mapper 的函数组合

node.js - 如何在 node 中集成 swagger 和 fastify 框架

linux - "sort filename | uniq"不适用于大文件

javascript - 如何在不使用 slurp 标志的情况下将 JSON 序列与 jq 结合起来?

javascript - 预期未定义是 Node 模块的对象

C CLI 游戏概念

vue.js - 如何为 Vue 项目指定有效的入口点/文件?

javascript - 按 .elements id 对 .container .elements 进行排序

javascript - 有没有办法用 jquery 改变一个类的属性?

javascript - 从 ANT 将命令行参数传递给 jstestdriver JAR?