Загрузить модуль 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
,