Создать приложение сейчас довольно просто, по сравнению с прошлым годом, когда так называемая усталость от 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 г.