Загрузить модуль ecmascript (файл.mjs) в качестве основной записи в nodejs cli

Есть ли способ использовать файл модуля ecmascript в качестве основного файла записи для cli, экспортируемого с помощью записи bin в package.json?

я думаю, мне нужно было бы как-то предоставить флаг --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, что делает невозможным передачу флагов командной строки процессу узла (см. ответ, который я не смогу использовать)

edit2: решил, что и здесь я должен оставить ссылку на соответствующую библиотеку @ magic / cli, это мой текущий подход (я включаю файл bin.js, который child_process.spawns файл mjs)

1 ответ

Узел 13 позволяет --experimental-modules по умолчанию, поэтому #!/usr/bin/env nodeдостаточно. Однако предупреждение по-прежнему выдается.

(node:23260) ExperimentalWarning: The ESM module loader is experimental.

Вы можете установить esm модуль, а затем требуют его при запуске кода, т.е. вместо --experimental-modules, ты можешь использовать -r esm вместо. Затем вы запустите свой код как node -r esm bin.mjs,

Другие вопросы по тегам