Преобразовать строку команды в массив аргументов (NodeJS)
Есть строка:
$testcmd some args and "string args" --exparam 50 -p -m -o "123456"
Её необходимо преобразовать в что-то подобное
{
cmd: 'testcmd',
args: ['some','args','and','string args'],
parameters:{
exparam: 50,
p: true,
m: true,
o: '123456'
}
}
Как это сделать с помощью NodeJS
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Вы можете попробовать изобрести велосипед, что-то вроде такого:
const options = { args: [], parameters: {} };
options.cmd = `${process.argv[0]} ${process.argv[1]}`;
let i = 2;
while (i < process.argv.length) {
let option = process.argv[i];
if (option.startsWith('-')) {
option = option.replace(/^-{1,2}/, '');
if (process.argv[i + 1].startsWith('-')) {
options.parameters[option] = true;
} else {
options.parameters[option] = process.argv[++i];
}
} else {
options.args.push(option);
}
i++;
}
console.log(options);
Но лучше воспользоваться готовыми библиотеками, как вам посоветовали, которые давно отлажены и учитывают много разных сложных моментов:
https://www.npmjs.com/package/commander
https://www.npmjs.com/package/yargs
https://www.npmjs.com/package/meow
Ну и так далее, поиском по ключевым словам на npmjs.com, пока не найдёте то, что вам понравится.