Узел: Как получить доступ к флагам вместо аргументов

#node.js #command-line-interface #flags

Вопрос:

В моем приложении командной строки я хочу распечатать либо:

  1. Вся командная строка, запустившая приложение
  2. Отдельные флаги и аргументы
  3. Скорее всего, и то, и другое.

Из process.argv этого я могу получить доступ к приложению , которое я запускаю ([0]: node.exe ), файлу, который я запускаю ([1]: app.js ), и остальным переданным аргументам. Однако флаг узла, который я передаю, не является частью массива.

Так, например, для моего приложения с интенсивным использованием памяти моя команда:

узел —максимальный размер старого пространства=10240 app.js 18 ложных

И мой process.argv массив-это:

 0:'C:\Program Files\nodejs\node.exe'
1:'d:\Repos\exampleApp\app.js'
2:'18'
3:'false'
 

Как вы можете видеть, нет ссылки на флаг узла max-old-space-size (на самом деле флаг V8, который передается).

Итак, в конечном счете, я пытаюсь получить доступ к этому переданному флагу.

Ответ №1:

В соответствии с Node.js документы, похоже process.execArgv , это свойство, которое предоставляет эти флаги. Например process.argv , это будет массив. В документах они называются «параметрами командной строки, специфичными для Node.js», а не «Node.js флаги».

Итак, для примера приведем команду:

узел —максимальный размер старого пространства=10240 app.js 18 ложных

process.execArgv массив будет:

 0: '--max-old-space-size=10240'