Fesor
@Fesor
Full-stack developer (Symfony, Angular)

Сборка проекта под Angular. Как кто делает?

С недавних пор приходится много писать на AngularJS. Проекты средние (2-4К строк). Встал вопрос о сборке проекта.

Для сборки используется GruntJS, на данный момент для себя использую следующий подход (позаимствовано и grunt-файла самого Angular:
каждая директива, контроллер, сервис и т.д. в отдельном файле. Все разнесено по каталогам (по модулям и по назначению). Есть файл AppFiles.json, который содержит список всех файлов разделенных на отдельные модули. Далее собираются модули, производится конкатенация и уже эти модули используются в индексе. Преимущества такого подхода очевидны: все легко найти, любой интересующий фильтр, сервис или директиву… Минусы так же очевидны — при изменении одного единственного файла приходится пересобирать весь проект. Задача пока решена через ватчеры, но мне не нравится. В среднем в проектах порядка 50-100 файлов, так что подключать каждый по отдельности так же не вариант. Думал написать мини-плагин, который будет собирать модули как-то так:
<!-- module:app dist:dist/someModule.js -->
<script src="src/someModule/someModule.js"></script>
<script src="src/someModule/services/TestService.js"></script>
...
<!-- endmodule-->

Можно было бы при сборке на основе этого проводить конкатенацию и заодно заменять весь этот блок подключением одного единственного js файла. А при разработке файлы бы подгружались подряд, так что при изменении какого-либо из них не нужно было бы пересобирать проект.
Но опять же это как-то слишком. Можно так же прописывать таргеты и описывать что и как должно собираться в grun-файле, но опять же сомнения гложут.

А как вы организуете работу с большим проектом? Фреймворк не столь важен.
  • Вопрос задан
  • 7079 просмотров
Решения вопроса 1
EugeneOZ
@EugeneOZ
Я использую yeoman (он настраивает Grunt). Ещё можете посмотреть ng-boilerplate
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
theasmoth
@theasmoth
у нас в проекте несколько watch работают через grunt модуль concurrent
один на все css, второй на angular, третий на jquery+либы к нему и т.д.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы