загрузить модуль ecmascript (файл .mjs) в качестве основной записи в nodejs cli - PullRequest
0 голосов
/ 15 мая 2019

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

edit: пожалуйста, не нужно, чтобы мой cli был установлен как исполняемый файл с использованием npm i -g, что, afaik, делает невозможным передачу любых флагов командной строкик процессу узла (см. ответ , который я не смогу использовать)

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

1 Ответ

0 голосов
/ 15 мая 2019

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

...