Дополнительно
Как передать аргументы командной строки программе Node.js?
У меня есть веб-сервер, написанный на Node.js, и я хотел бы запустить с определенной папкой. Я не уверен, как получить доступ к аргументам в JavaScript. Я запускаю узел, как это:
$ node server.js folder
здесь server.js
- код моего сервера. Node.js help говорит, что это возможно:
$ node -h
Usage: node [options] script.js [arguments]
Как бы я получил доступ к этим аргументам в JavaScript? Почему-то я не смог найти эту информацию в Интернете.
2264
31
Стандартный метод (без библиотеки)
Аргументы хранятся в
process.argv
Вот документы узла при обработке аргументов командной строки:
Это будет генерировать:
Чтобы нормализовать аргументы, которые получит обычная функция javascript, я делаю это в своих сценариях оболочки node.js:
Обратите внимание, что первый аргумент обычно является путем к nodejs, а второй аргумент - это местоположение скрипта, который вы выполняете.
Актуальный правильный ответ для этого - использовать библиотеку minimist. Мы использовали node-optimist, но с тех пор оно устарело.
Вот пример того, как его использовать, взятый прямо из минималистической документации:
Ответ 2018 года, основанный на текущих тенденциях в дикой природе:
Ванильный аргумент JavaScript синтаксический анализ:
Это возвращает:
Официальные документы
Наиболее используемые пакеты NPM для анализа аргументов:
Минимист: для минимального анализа аргументов.
Commander.js: наиболее принятый модуль для анализа аргументов.
Мяу: Более легкая альтернатива Commander.js
Яргс: более сложный анализ аргументов (тяжелый).
Vorpal.js: Зрелые / интерактивные приложения командной строки с синтаксическим анализом аргументов.
Оптимист (узел-оптимист)
Проверьте оптимистическая библиотека, это намного лучше, чем анализ параметров командной строки вручную.
Обновить
Оптимист устарел. Попробуйте yargs, который является активным форком оптимиста.
Несколько отличных ответов здесь, но все это кажется очень сложным. Это очень похоже на то, как сценарии bash получают доступ к значениям аргументов, и уже снабжены стандартом с node.js, как указал MooGoo. (Просто чтобы сделать это понятным для кого-то, кто новичок в node.js)
Пример:
Commander.js
Отлично подходит для определения ваших вариантов, действий и аргументов. Он также генерирует страницы справки для вас.
Быстро
Отлично подходит для получения информации от пользователя, если вам нравится подход обратного вызова.
Co-Prompt
Отлично подходит для получения информации от пользователя, если вам нравится подход генератора.
Библиотека Stdio
Самый простой способ проанализировать аргументы командной строки в NodeJS - это использовать модуль stdio. Вдохновленный утилитой UNIX
getopt
, он выглядит следующим образом:Если вы запустите предыдущий код с этой командой:
Тогда объект
ops
будет следующим:{{{797222}}}
Таким образом, вы можете использовать его как хотите. Например:
Также поддерживаются сгруппированные параметры, поэтому вы можете написать
-om
вместо-o -m
.Кроме того,
stdio
может автоматически генерировать вывод справки / использования. Если вы позвоните вops.printHelp ()
, вы получите следующее:Предыдущее сообщение отображается также, если не указана обязательная опция (предшествует сообщение об ошибке) или если она неверно определена (например, если вы указываете один аргумент для опции и для нее требуется 2).
Вы можете установить модуль stdio, используя NPM:
Если ваш скрипт называется myScript.js, и вы хотите передать имя и фамилию «Шон Уортингтон» в качестве аргументов, подобных приведенным ниже:
Затем в вашем сценарии вы пишете:
Нет Libs с флагами, отформатированными в простой объект
Примеры
Просто
ввод
вывод
Реальный мир
ввод
вывод
командная строка-арги стоит посмотреть!
Вы можете установить параметры, используя основные стандарты обозначений (узнать больше). Все эти команды эквивалентны, устанавливая одинаковые значения:
Чтобы получить доступ к значениям, сначала создайте список определения опций, описывающий параметры, которые принимает ваше приложение. Свойство
type
является функцией сеттера (поставляемое значение передается через это), давая вам полный контроль над полученным значением.Затем проанализируйте параметры, используя commandLineArgs ():
options
теперь выглядит так:Расширенное использование
Помимо приведенного выше типичного использования, вы можете настроить аргументы командной строки для принятия более продвинутых синтаксических форм.
[Синтаксис на основе команд](https://github.com/75lb/command-line-args/wiki/Implement-command-parsing- (git-style)) (git style) в форме:
Например.
[Синтаксис команд и подкоманд](https://github.com/75lb/command-line-args/wiki/Implement-multiple-command-parsing- (стиль докера)) (стиль докера) в форме: ,
Например.
Руководство по использованию поколения
Руководство по использованию (обычно печатается при установке
--help
) можно создать с помощью командная строка-использование. См. Примеры ниже и прочитайте документацию для получения инструкций по их созданию.Типичный пример руководства по использованию.
использование! Руководство по использованию polymer-cli является хорошим примером в реальной жизни.
использование!
Дальнейшее чтение
Есть еще много чего узнать, см. Вики для примеров и документации.
Для этого есть приложение. Ну, модуль. Ну, больше, чем один, наверное, сотни.
Яргс - один из самых забавных, его документы круто читать.
Вот пример со страницы github / npm:
Вывод здесь (он читает параметры с тире и т. Д., Короткие и длинные, числовые и т. Д.).
Вот мое решение на 0 dep для именованных аргументов:
Пример:
Примечание. Естественно, это не удастся, если аргумент содержит
=
. Это только для очень простого использования.без каких-либо либрарий: с использованием Array.prototype.reduce ()
для этой команды
node index.js count = 2 print debug = false msg = hi
также,
мы можем измениться
(намного дольше)
автоматически анализировать Boolean & Число
Вероятно, это хорошая идея - управлять своей конфигурацией централизованно, используя что-то вроде nconf https://github.com/flatiron/nconf
Это поможет вам работать с файлами конфигурации, переменными среды, аргументами командной строки.
Передача, утверждение аргументов - это простой процесс. Node предоставляет вам свойство process.argv, которое представляет собой массив строк, которые являются аргументами, которые использовались при вызове Node. Первая запись массива - это исполняемый файл узла, а вторая - имя вашего скрипта.
Если вы запустите скрипт с нижеприведенными атрибутами
Файл: args.js
Вы получите массив как
Если вы хотите запустить что-то вроде этого:
--
Или что-то вроде:
--
proj.js
Вы можете достичь аргументов командной строки, используя
system.args
. И я использую приведенное ниже решение, чтобы проанализировать аргументы в объекте, чтобы я мог получить то, что я хочу по имени.теперь вам не нужно знать индекс аргумента. используйте его как
args.whwhat
Вы можете проанализировать все аргументы и проверить, существуют ли они.
файл: parse-cli-arguments.js:
Чем просто сделать: