Я запускаю новый проект - достаточно большое приложение, в котором есть только код JavaScript (за исключением небольшого HTML/CSS), и мы подумали о подходящем процессе сборки и доступных вариантах оснастки. Я хотел бы услышать от всех, у кого был подобный выбор, который можно сделать в последнее время.
Некоторые требования
У меня есть некоторые существенные требования (я мог бы добавить больше колоколов и свистов позже, но это действительно необходимо):
- ... Я бы хотел, чтобы этот вариант был действительно агрессивным для создания/создания сборки (подумайте Closure Compiler with advanced Оптимизации.)
- Проверка качества кода: JSLint или аналогичный - что-то, что может вызвать любые вопиющие проблемы с кодом.
- Тестирование модулей. У меня очень сильное предпочтение JsTestDriver, когда дело доходит до модульного тестирования. JS - способность тестировать главные достопримечательности - несколько браузеров одновременно (и быстро!) и легко автоматизировать. Тем не менее, я бы с радостью рассмотрел альтернативы.
- Непрерывная интеграция: мы используем CI-сервер (BuildBot для записи), и любая сборка script должна быть легко автоматизирована.
Возможные решения
Я уже думал о нескольких возможностях (некоторые подробности догадки, поправьте меня):
Ant
Pros:
- Кажется, это связано с наименьшей работой, не в последнюю очередь из-за отличной HTML5 Boilerplate build script в качестве отправной точки
- Многие инструменты написаны (или имеют обертки) на Java - в том числе JSLint/Hint, Closure Compiler и JsTestDriver
- Ant скрипты являются стандартными тарифами, когда дело доходит до серверов CI
- К счастью, кросс-платформенный
против:
- Запуск многих файлов JAR, возможно, немного медленный? (Я думаю с точки зрения инициализации больше, чем выполнение)
рубин/Рейк
Pros:
- (Хорошо написанные) Ruby-скрипты, скорее всего, лучше справляются, чем груды XML
- Для многих соответствующих инструментов есть обертки (часто драгоценные камни), такие как JSLint, JSTestDriver и UglifyJS
- В равной степени кросс-платформенный
против:
- Знание Ruby для изменения процесса сборки. Хотя это не огромная сделка, мы не являемся магазином Ruby, и альтернативы не имеют такого же барьера для входа
- Немногие из инструментов фактически выполняются в Ruby и фактически являются обертками вокруг исполняемого кода Java или JavaScript - похоже, что это может замедлить работу вниз.
Node (и, вероятно, что-то вроде Jake)
Pros:
- Множество инструментов доступно в JavaScript (и как модули доступны для Node) - JSLint/Hint, UglifyJS и т.д.
- Предположительно довольно быстро (это сообщение в блоге иллюстрирует, что UglifyJS превосходит компилятор Closure довольно полно, для одного)
против:
- Node (в частности, NPM) пока не совсем в Windows (у нас есть некоторые разработчики, работающие под Windows)
- Кажется, не существует какой-либо существующей поддержки для использования JsTestDriver из приложения Node (но может быть написана оболочка)
Исходя из этого, Ant кажется фаворитом в настоящее время.