В этом коротком сообщении в блоге мы увидим, как мы можем написать сценарий Node.js, который принимает аргументы командной строки и именованные аргументы.
Как мы знаем, в любом скрипте Node.js у нас есть объект с именем process
, который содержит много информации о текущем запущенном процессе от переменных среды до PID и т. д.
Одним из доступных ключей в объекте process
является argv
, и мы можем легко получить к нему доступ через process.argv
.
Два первых элемента — это путь к исполняемому файлу Node.js и путь к файлу JavaScript, за которыми следуют предоставленные аргументы командной строки, если только вы не запустите их в интерактивной оболочке Node.js.
// From script file named main.js
console.log(process.argv)
[ '/usr/bin/node', '/home/mmoallemi/main.js' ]
// From interactive node
❯ node
Welcome to Node.js v15.14.0.
Type ".help" for more information.
> process.argv
[ '/usr/bin/node' ]
Вместо этого мы должны использовать process.argv.slice(2)
:
node main.js first second third
~
❯ node main.js first second third
[
'first',
'second',
'third'
]
Здорово! До сих пор мы добились передачи позиционных аргументов в наш сценарий, но если мы хотим использовать именованные аргументы или какие-то флаги?
node main.js extract --input=test.txt --output=results.txt
[
'extract',
'--input=test.txt',
'--output=results.txt'
]
Мы передали один позиционный аргумент и два именованных аргумента, мы можем продолжить и очистить значения и разделить их на =
и тому подобное, но давайте сделаем это правильно.
Установите minimist
с помощью вашего любимого менеджера пакетов, я использую пряжу:
yarn add minimist
а затем передать аргументы minimist
для его анализа:
// node main.js extract --input=test.txt --output=results.txt
// main.js script
const minimist = require('minimist')
const args = process.argv.slice(2)
const parsedArgs = minimist(args)
console.log('Parsed Arguments:', parsedArgs)
console.log('Input:', parsedArgs.input)
console.log('Output:', parsedArgs.output)
console.table(parsedArgs)
Наслаждайтесь результатами!
Parsed Arguments: { _: [ 'extract' ], input: 'test.txt', output: 'results.txt' }
Input: test.txt
Output: results.txt
┌─────────┬───────────┬───────────────┐
│ (index) │ ۰ │ Values │
├─────────┼───────────┼───────────────┤
│ _ │ 'extract' │ │
│ input │ │ 'test.txt' │
│ output │ │ 'results.txt' │
└─────────┴───────────┴───────────────┘
Удачного написания сценариев!
Первоначально опубликовано на https://mmoallemi99.com 2 мая 2021 г.