# Публикация пакета

Первым шагом, как и в прошлый раз, мы подготавливаем и публикуем наш новый npm-пакет.
Подключаем `babel` и создаем запускающийся файл, который при вызове без агрументов
отображает help.


```plain
Config Compare.

Usage:
  conf-compare.js <first-config> <second-config>
  conf-compare.js -h | --help
  conf-compare.js --version

Options:
  -h --help     Show this screen.
  --version     Show version.
```

### Задачи

1. Инициализируйте npm-пакет.
1. Создайте в папке `src/bin` исполняемый файл `conf-compare.js`.
1. При запуске это файла должна отображаться справка.
1. Создайте `Makefile` с командой `install` выполняющей `npm install`.
1. Подключите в зависимости (devDependencies) пакеты: `babel-cli`, `babel-core`,
   `babel-preset-env`, `babel-preset-stage-0`. Установите их (`make install`).
   Не забудьте добавить `node_modules` в `.gitignore`.
1. Сконфигурируйте `.babelrc`, так чтобы в него вошли два пресета: `env` и `stage0`.
1. Создайте npm-скрипт `babel-node`:

  ```plain
  "babel-node": "babel-node"
  ```

1. Создайте npm-скрипт `conf-compare`:

  ```plain
  "conf-compare": "npm run babel-node -- src/bin/conf-compare.js"
  ```

## Публикация в npm каталог

1. Создайте npm-скрипт `build`:

  ```
  "build": "NODE_ENV=production babel src --out-dir dist --source-maps inline",
  ```

  Эта команда натравливает `babel` на папку `src` и указыает ему сложить обработанный
  код в папку `dist`. Соответственно эту папку надо добавить в `.gitignore`.

1. Создайте npm-скрипт (он же и хук) `prepublish`:

  ```
  "prepublish": "npm run build"
  ```

  `prepublish` будет вызван автоматически в момент вызова `npm publish`.

1. Добавьте созданный `bin` в `package.json`:

  ```json
  "bin": {
    "brain-games": "dist/bin/brain-games.js"
  }
  ```

  Обратите внимание что используется обработанная бабелем версия.

1. Опубликуйте пакет в `npm`. Вероятно вам придется изменить имя пакета (не репозитория!).
  Имя выберите произвольно.
1. Добавьте в `Makefile` команду `publish`.
1. Установите пакет в систему глобально и убедитесь в том что он работает,
  запустив `brain-games` в терминале.
