Как определить, вызывается ли скрипт напрямую или через узел с яргами? - PullRequest
0 голосов
/ 08 сентября 2018

Я пишу утилиту CLI в NodeJS, используя yargs .

У Ярга есть функция .usage(), которую я использую следующим образом:

yargs.usage("\nUsage: node $0 --input=path/to/input/file --output=path/to/output/file")

Когда я запускаю node cli.js --help, он отображает следующее, как и ожидалось:

Usage: node cli.js --input=path/to/input/file --output=path/to/output/file

Очевидно, что yargs расширяет заполнитель $0 до cli.js, и это здорово. Вот почему я вручную включил node в вызов .usage().

Но, таким образом, когда я, наконец, опубликую свою утилиту как инструмент CLI, если кто-то установит ее с помощью npm install -g, я боюсь, что показ использования будет

Usage: node my-utility --input=path/to/input/file --output=path/to/output/file

Хотя, очевидно, я бы хотел, чтобы это было

Usage: my-utility --input=path/to/input/file --output=path/to/output/file

Как я могу сделать эту условную проверку, чтобы печатать node только в том случае, когда он действительно был назван таким образом (в отличие от прямого вызова)?

...