Подтвердить что ты не робот

Создание инструментов для создания JavaScript

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

4b9b3361

Ответ 1

Краткая информация о завершении проекта:

Ant был выбран для создания проекта, но позже мне хотелось использовать решение на основе Node. Хотя вы можете сделать Ant делать большинство вещей, часто бывает сложно или необходимо написать много кода Java, чтобы заставить его делать что-то необычное. Node и NPM значительно улучшились в Windows на протяжении всего жизненного цикла проекта, и в настоящее время существует избыток тестовых решений (BusterJS интересно мне большинство), которые можно легко вызывать из Node script.

Я был заинтригован, увидев выпуск Grunt, который, похоже, был особенно полезен для такого проекта. Я был бы заинтересован услышать, как люди используют этот инструмент, используемый с проектами разумного размера (для справки, проект, который я только что завершил, имел около 120 исходных файлов JavaScript.)

Ответ 2

Более года спустя, но...

Если r.js + RequireJS - это ваша вещь, и вам нужны автоматические сборки, а также помощь в разработке/помощь, например, листинг, минимизация, конкатенация, компиляция активов и т.д., проверьте Mimosa. Он будет делать многие из этих вещей прямо из коробки с минимальной конфигурацией.

Ответ 3

Мне нравится RequireJS для загрузки зависимостей/динамической загрузки script и создания одного файла. Для непрерывной интеграции проверьте TeamCity из JetBrains.

Ответ 4

Gulp

Существует новый инструмент сборки gulp, который использует потоки node, поэтому он не должны писать любые временные файлы между шагами (например, grunt). Это быстро.