2022-01-23 16:22:46
util.parseArgs()Вот уже 3 года тянется дискуссия на тему стандартного способа парсить CLI аргументы в Node.js.
Внутри скриптов нам хочется понимать какие флаги и с какими опциями передал пользователь и как-то менять поведение утилиты. В ноде эти опции можно получить через process.argv.
Запустив, например, команду для билда сторибука:
yarn build-storybook --output-dir dist/selene-static/storybook --quiet
Вызвав process.argv(), получим следующее:
[
"/Users/v7rulnik/.fnm/node-versions/v16.10.0/installation/bin/node",
"/Users/v7rulnik/projects/aviasales/selene/node_modules/@storybook/react/bin/build.js",
"--output-dir",
"dist/selene-static/storybook",
"--quiet"
]
Т.е. просто плоский список с разделением по пробелам. Работать с ним, прямо скажем, не очень удобно. Это послужило появлению yargs и minimist, которые упрощают парсинг, группируют название и опции и т.д.
И вот, в рамках обсуждения из ишью появилось предложение встроить в ноду утилиту для парсинга util.parseArgs(). Уже доступен полифилл @pkgjs/parseargs, но использовать его пока что не стоит. Это всего лишь proof of concept, который будут дорабатывать и, позже, он окажется доступен в самой ноде.
P.S. Если взглянуть на массив аргументов, то будет видно, что первым элементом всегда является путь до node. А вторым скрипт, который мы запускаем. Именно поэтому часто можно встретить process.argv.slice(2) — такиим образом обрезают два первых элемента, которые не содержат полезной информации.
733 viewsedited 13:22