- сборка js- файлов ✓
- сборка css- файлов ✓
- обработка шрифтов и изображений в css. Сборщик должен уметь менять пути на абсолютные ✓
- сборка шаблонов ✓
- watch ✓
- возможность подключать библиотеки, не поддерживающие CommonJS ✗
- сборка gulp- и jake- компонентов ✓
- множественная сборка (как на fires)
- возможность динамической дозагрузки (multiple bundles)
Скрипты собираем с помощью browserify
, в качестве менеджера пакетов используем npm
. Если у компонента нет index.js
, то в package.json
можно указать, какой скрипт нужно подключать. Зависимости отслеживаются автоматически.
Предполагаем, что каждый компонент хранит ссылку на стили в поле style
файла package.json
. Анализируем дерево зависимостей и получаем список css- файлов с помощью browserify
и parsel-map
.
Решается использованием плагинов gulp-file-assets
, gulp-rename
и gulp-replace
. Ресурсы хранятся по тем же путям, но относительно папки dist
. В css-файле меняем пути регуляркой.
- TODO не обрабатывать http-url.
Используем browserify transformations
(для html-шаблонов brfs
). Каждый компонент может использовать свои transformations
. Их указываем в browserify.transformations
в package.json
.
Watch делится на два потока. Скрипты и шаблоны отслеживаем с помощью watchify
. Стили - с помощью gulp.watch
.
На данный момент реализовать затруднительно, потому как transform, позволяющий это делать не поддерживает конфигурацию через node API. github issue
Все используемые модули объявляем в качестве зависимостей в package.json
и ставим в node_modules
. npm выполняет скрипт postinstall
и сам собирает компоненты.
ВАЖНО: npm не устанавливает devDependencies
для компонентов в node_modules
, так что если компонент требует сборки, то мы либо указываем сборщик и прочее в dependencies
, либо добавляем в репозиторий папку dist
.