запустить скрипт Node.js через командную строку или импорт ES6 - PullRequest
0 голосов
/ 20 сентября 2018

Как написать сценарий Node, который можно запустить из командной строки или с помощью оператора импорта ES6?

Я использую флаг --experimental-modules и расширение .mjs для запуска сценариев как ES6modules.

Пример

Скажем, у меня есть следующий скрипт в sayHello.mjs:

export default function sayHello() {
  console.log(`Hello!`);
}

Я бы хотел использовать этот скрипт следующими двумя способами:

  1. С помощью командной строки:

    node --experimental-modules sayHello.mjs

  2. С помощью оператора импорта ES6 в другом сценарии:

import sayHello from './sayHello.mjs';

sayHello();

Подробнее

Я ищу решение, подобное использованию module.main для модулей CommonJS (это не работает для импорта ES6):

if (require.main === module) {
    console.log('run from command line');
} else {
    console.log('required as a module');
}

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете попробовать:

function sayHello() { console.log("Hello"); }
if (process.env.CL == 1){
    sayHello();
} else {
    export default sayHello;
}

Из командной строки используйте:

CL=1 node --experimental-modules sayHello.mjs

Довольно просто, но оно должно работать

Другой вариант - проверить process.argv[1] поскольку это всегда должно быть имя файла, указанное в командной строке :

if (process.argv[1].indexOf("sayHello.mjs") > -1){
    sayHello();
} else {
    export default sayHello;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...