Как предоставить информацию об использовании для скриптов npm - PullRequest
0 голосов
/ 05 июня 2018

Есть ли простой способ предоставить информацию об использовании для сценариев npm?

В идеале, когда я запускаю npm run, я получу вывод, подобный этому (обратите внимание на описание внизу каждой задачи):

Lifecycle scripts included in product-discovery-service:
  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
    Probably don't need this (would be nice to be able to omit tasks like this)
  prewatch:run
    wait-on --log build/server.js
    Probably don't need this (would be nice to be able to omit tasks like this)
  build
    babel server.js --out-dir build/
    Build the project
  prebuild
    rimraf build/
    Probably don't need this (would be nice to be able to omit tasks like this)
  build:dev
    npm run build -- --source-maps
    Probably don't need this (would be nice to be able to omit tasks like this)

Похоже, что npm не поддерживает это, а может есть стороннее с решением?Я нашел npm-scripts-help , но он кажется неуклюжим.

1 Ответ

0 голосов
/ 06 июня 2018

Краткий ответ:

Да, вы правы, npm не предоставляет встроенную функцию для включения описаний при запуске npm run.Таким образом, любое решение, которое вы выберете, будет иметь некоторый уровень «чувствует себя неуклюже» , связанный с ним.

Как вы упомянули npm-scripts-help представляет собой пакеткоторый может достичь этого.Я не знаю других подобных сторонних решений.


Альтернативное пользовательское решение:

В следующих шагах описывается, как написать простой пользовательский сценарий служебной программы Nodejs (без использования другого третьегопакетная зависимость).Этот сценарий затем может быть вызван с помощью npm-scripts.

  1. Создайте простой служебный скрипт 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);
    
  2. Сохранить usage.js в корневой директории вашего проекта в том жеуровень, на котором хранится package.json.

  3. Добавьте следующий сценарий usage в раздел scripts вашего package.json:

    ...
    "scripts": {
      "usage": "node usage",
      ...
    },
    ...
    
  4. Запустите 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 кодах:

  • \x1b[1m
  • \x1b[0m

... используются для поощрения фрагментов кода и сброса форматирования обратно к значению по умолчанию соответственно.

Совет: Если требуется кроссплатформенность, я предлагаю использовать 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}`
...