Передача аргументов проста, а получение их - всего лишь вопрос чтения массива process.argv, который Node делает доступным везде, в основном. Но вы наверняка захотите прочитать их как пары ключ / значение, поэтому вам потребуется сценарий для его интерпретации.
Джозеф Мердриньяк опубликовал замечательный пример с использованием Reduce, но он опирался на синтаксис key=value
вместо -k value
и --key value
. Я переписал его намного уродливее и дольше, чтобы использовать этот второй стандарт, и я опубликую его как ответ, потому что он не подходит в качестве комментария. Но это делает работу.
const args = process.argv.slice(2).reduce((acc,arg,cur,arr)=>{
if(arg.match(/^--/)){
acc[arg.substring(2)] = true
acc['_lastkey'] = arg.substring(2)
} else
if(arg.match(/^-[^-]/)){
for(key of arg.substring(1).split('')){
acc[key] = true
acc['_lastkey'] = key
}
} else
if(acc['_lastkey']){
acc[acc['_lastkey']] = arg
delete acc['_lastkey']
} else
acc[arg] = true
if(cur==arr.length-1)
delete acc['_lastkey']
return acc
},{})
С этим кодом команда node script.js alpha beta -charlie delta --echo foxtrot
выдаст вам следующий объект
args = {
"alpha":true,
"beta":true,
"c":true,
"h":true,
"a":true,
"r":true
"l":true,
"i":true,
"e":"delta",
"echo":"foxtrot"
}