Анонс clinch - инструмент для сборки js/coffee проектов (как stitch, но лучше)

114 views
Skip to first unread message

Дмитрий Карпич

unread,
Mar 2, 2013, 4:28:08 AM3/2/13
to coffees...@googlegroups.com
Привет всем!

Сегодня на github была выложена годная beta-версия нового сборщика js/coffee проектов - clinch.


Если коротко, то это stitch, только лучше - используется парсинг кода на предмет зависимостей, а не сбор всего, что попадется в папках.
Если коротко, это browserify, только лучше - "обвязочный" код составляет около 40 строк, вместо 300-600, плюс все хорошо настраивается из конфига - никакой магии и умолчального поведения.

Цель создания clinch - мне нужен был быстрый упаковщик coffee-проекта, в коде которого можно использовать в зависимостях npm-модули. 

Например - нужен нам sprintf. В stitch его бы пришлось указывать в зависимостях и шаманить в коде. В clinch эта зависимость просто разрешается и в готовом бандле на клиенте оказывается рабочий вариант sprinf.

Для итоговой сборки используется концепция бандла (bundle), т.е. набор из любого количества элементов, очень удобно для упаковки каких-то небольших компонентов, не целого приложения, хотя и приложение можно завернуть.
Получившийся бандл экспортируется на страницу в собственную переменную, т.е. для страницы не определяется никаких квази-require. Таким образом можно на одной странице иметь сколько угодно бандлов, пока они различаются по именам - все будет отлично.

Как это работает - как обычный node-модуль. Никакого cli, никаких веток в package.json, никаких web_modules папок.
Только конфиг пакета и асинхронное получение результата в виде строки. Дальше пишем его (результат) в файл сразу, или минимизируем, или отдаем через express/connect. 

Что с middleware? Clinch сам себе middleware, в том смысле что он кеширует результаты(и инвалидирует кеш если файлы изменились), так что все работает из коробки.

Что со скоростью - она вполне приличная, можно смело использовать на develop сборку на лету. Для продакшена, конечно же - соберите все заранее в статику.

Описание API и конфигов есть на странице проекта, старался все делать максимально просто, самому же пользоваться.

На результаты его работы можете посмотреть тут:

Из вкусных плюшек - нет дублей, но есть версии. Т.е. если разные модули используют разные версии чего-то в зависимостях - они получат то, что нужно. Если же несколько файлов одинаковые - будет упакован только один.

Буду признателен за фидбек, предложения, замечания и сообщения о проблемах - мне интересны случаи, когда clinch не справится с задачей. Пишите, будем улучшать.

Митяй.

PS. Пока нет source map - пока даже и не знаю, с какой стороны к этому подступиться. Есть у кого-нибудь опыт в этой области?

Дмитрий Карпич

unread,
Mar 5, 2013, 6:58:25 AM3/5/13
to coffees...@googlegroups.com
Обновка.

С версии 0.2.1 реализована поддержка Jade шаблонов.

В commonjs модуле просто пишем `template_fn = require('./template_file.jade') ` (или даже без расширения) и готово!
Clinch скомпилирует client-mode шаблон и упакует его в бандл.

Теперь нужно будет лишь подгрузить 'runtime.js' от jade и можно наслаждаться всеми плюшками jade - такие как фильтры, инклюды и прочее. Важно - шаблон компилируется с настройками 'self : on', т.е в шаблонах пользуемся 'self'-префиксными именами переменных. Использовать "голые" переменные с "with" магией не получится, простите.

Для теста данного кода в node.js придется немного помудрить, но это возможно. Смотрим примеры в директории "./test"

Фитбек, замечания и пожелания приветствуются.

Митяй.
Reply all
Reply to author
Forward
0 new messages