Создать приложение сейчас довольно просто, по сравнению с прошлым годом, когда так называемая усталость от javascript занимала несколько дней установки, не давая нам ничего полезного.
– привет, как прошел ваш хакатон?– неплохо, мы настроили Babel– ага…
– да.
— Я Девлопер (@iamdevloper) 17 октября 2016 г.
В основном это благодаря всей работе, которую сообщество вложило в различные кли для загрузки ваших проектов. Особенно в мире Angular angular-cli сияет, когда вы хотите создать полноценное приложение.
В angular-cli уже настроено все, включая поддержку scss, AOT, сервис-воркер и многое другое. Недавно он добавил поддержку минимального флага, который встроен в стили и шаблоны.
Модули
Модули — это не приложения, модули — это независимые единицы, которые можно использовать внутри ваших приложений. Модули будут использоваться только внутри других приложений. Angular предоставляет декоратор @NgModule для его определения, но angular-cli по-прежнему не поддерживает шаблон module.
Недавно Стивен Флюин опубликовал интересную статью в блоге angular, это хороший анализ того, что cli делал, делает и будет делать. Меня очень впечатлил один из пунктов о будущем: Поддержка библиотек, это означает, что команда angular-cli на самом деле понимает, что этого не хватает, и они работают над этим.
Что делать, если вам нужно прямо сейчас решение для создания библиотеки?
генератор-angular2-библиотека
В этом случае вы можете использовать генератор йомана generator-angular2-library.
Генератор создает пакет модулей в соответствии с официальным форматом углового пакета. Он будет включать встроенные шаблоны, встроенные стили, а также поддержку AOT.
Для начала вам просто нужно установить его:
$ npm i -g yo generator-angular2-library
а затем запустите генератор:
$ mkdir library-name
$ cd library-name
$ yo angular2-library
Генератор задаст вам ряд вопросов, чтобы настроить вашу библиотеку.
Это хорошо работает, когда у вас есть несвязанные модули, и вы хотите управлять ими в разных репозиториях. Не всегда это лучший выбор.
Монорепо против мультирепо
Сейчас мы входим в «опасную зону» вечной битвы: мультирепо против монорепо.

У всех разное мнение о том, какой подход лучше. Здесь я хочу перечислить некоторые плюсы каждого подхода и рассказать, на мой взгляд, когда использовать тот или иной.
Монорепозиторий:
- Единая точка входа для проверки кода
- Помогает координировать между зависимыми модулями
- Умная настройка для разработки
- Легче запускать интеграционные тесты, если это необходимо.
Мультирепо:
- Более быстрое время сборки/тестирования
- Полегче
- Удалить право собственности
Если у вас есть несвязанные модули, которые не требуют друг друга или зависят от модуля core, вам больше подойдет мультирепозиторий. Для начала вы можете использовать generator-angular2-library.
С другой стороны, если что-то из вышеперечисленного не применимо, вам, вероятно, подойдет монорепозиторий. Вот почему такие проекты, как babel или ngrx, решили иметь один репозиторий с несколькими пакетами внутри.
Monorepo — Несколько пакетов
Репозиторий с несколькими пакетами — это единый репозиторий, в котором хранятся разные пакеты npm.
Создание монорепозитория не означает, что у нас будет только один пакет npm, на самом деле мы можем управлять несколькими пакетами благодаря таким инструментам, как lerna.
Он сосредоточен на двух основных командах: lerna bootstrap, которые связывают все зависимости в репозитории вместе, lerna publish, которая помогает публиковать обновленные пакеты.
Если вы не знакомы с ним, взгляните на lerna-wizard — учебник по кли, который покажет вам все основы, чтобы начать использовать lerna.
С чего начать?
Теперь у нас есть набор инструментов, но мы снова устали от javascript, нет ничего официального, что помогло бы нам запустить новый проект с несколькими пакетами. Поэтому в Ryanair мы выпустили angular-multimodule-cli.
Этот cli основан на системе сборки, которая есть в ngrx, большое спасибо, все в порядке. Для начала просто:
$ npm i -g angular-multimodule-cli
Теперь вы можете запустить его:
$ ng-multi new my-project
И вы готовы к работе, больше не нужно тратить время на настройку всего репозитория самостоятельно.
Он также включает в себя дополнительные инструменты, которые помогут вам поддерживать несколько модулей, вы можете прочитать об этом прямо в репозитории.
Мы создали генератор и начали использовать его внутри компании, а теперь, в октябре, мы решили открыть его исходный код. Почему октябрь? Возможно, вы слышали о Хактоберфесте от DigitalOcean, проще говоря, если вы зарегистрируетесь, если в течение октября вам удастся сделать четыре запроса на включение в любые проекты с открытым исходным кодом, вы получите бесплатную футболку.
Для нас в Ryanair это способ внести свой вклад во все сообщество открытого исходного кода в надежде, что это поможет вам создавать удивительные модули Angular, и если вы хотите улучшить его или у вас есть предложение, это лучшее время года!
Первоначально опубликовано на izifortune.com 9 октября 2017 г.