Краткий ответ:
Да, вы правы, npm не предоставляет встроенную функцию для включения описаний при запуске npm run
.Таким образом, любое решение, которое вы выберете, будет иметь некоторый уровень «чувствует себя неуклюже» , связанный с ним.
Как вы упомянули npm-scripts-help представляет собой пакеткоторый может достичь этого.Я не знаю других подобных сторонних решений.
Альтернативное пользовательское решение:
В следующих шагах описывается, как написать простой пользовательский сценарий служебной программы Nodejs (без использования другого третьегопакетная зависимость).Этот сценарий затем может быть вызван с помощью npm-scripts.
Создайте простой служебный скрипт Nodejs следующим образом.Давайте назовем файл usage.js
.
use.js
const usage = `
Lifecycle scripts included in ${process.env.npm_package_name}:
start
node server.js
available via \`npm run-script\`:
watch
run-p watch:build watch:run
Run in development mode and rebuild/restart when changes are made
watch:build
npm run build:dev -- --watch
Probably don't need this (would be nice to be able to omit tasks like this)
watch:run
nodemon --watch build/ --inspect
...`
console.log('%s', usage);
Сохранить usage.js
в корневой директории вашего проекта в том жеуровень, на котором хранится package.json
.
Добавьте следующий сценарий usage
в раздел scripts
вашего package.json
:
...
"scripts": {
"usage": "node usage",
...
},
...
Запустите npm run usage
, чтобы напечатать информацию об использовании на консоль.Имя сценария (т.е. usage
) должно быть предоставлено с npm run
.К сожалению, ваш идеал - просто запустить npm run
, чтобы регистрировать только простой журнал npm, который не содержит описания.
Примечания:
- Во второй строке в
usage.js
мы ссылаемся на переменную имени пакета через часть, которая гласит: ${process.env.npm_package_name}
Если вы измените расположение, где usage.json
хранится в каталоге вашего проекта, выВам нужно будет заново указать путь к нему в вашем npm-скрипте по мере необходимости.Например, если вы решите сохранить его в папке с именем scripts
, которая находится в корневом каталоге ваших проектов, тогда ваш сценарий usage
должен быть определен следующим образом:
...
"scripts": {
"usage": "node scripts/usage",
...
},
...
Добавление последовательностей управления ANSI / VT100
Вы можете использовать Последовательности управления ANSI / VT100 в usage.js
, чтобы добавить цвета и форматирование в журнал использования..
Например, в следующих usage.js
кодах:
... используются для поощрения фрагментов кода и сброса форматирования обратно к значению по умолчанию соответственно.
Совет: Если требуется кроссплатформенность, я предлагаю использовать ANSI 8/16 Цвета (перечисленыпо предыдущей ссылке) только.Коды форматирования для полужирный (\x1b[1m
) не работают в Windows cmd.exe с использованием таких терминалов, как Командная строка Windows или PowerShell .
use.js (с форматированием)
const BOLD = '\x1b[1m';
const NORM = '\x1b[0m';
const formattedUsage = `
Lifecycle scripts included in ${BOLD}${process.env.npm_package_name}:${NORM}
${BOLD}start
node server.js${NORM}
available via ${BOLD}npm run-script${NORM}
${BOLD}watch
run-p watch:build watch:run${NORM}
Run in development mode and rebuild/restart when changes are made
${BOLD}watch:build
npm run build:dev -- --watch${NORM}
...`
console.log('%s', formattedUsage);
Можно также рассмотреть возможность объединения литералов шаблона ES6 с process.env
и package.json vars для ссылки на значения каждого npm-скрипта.Например:
`${BOLD}${process.env.npm_package_scripts_watch}:${NORM}`