Comments 15
Не знаю… За все время работы с компьютером так и не смог заставить себя полюбить командную строку. Иногда без нее никак, но если есть выбор GUI vs CL, я всегда выбираю первое.
Хотел спросить, умеет ли работать с CoffeeScript, но не поленился пройти по нижней ссылке и узнал, что таки работает. Крутая вещь. Спасибо.
В CoffeeScript принято использовать jsl, для которого предусмотрен ключ -l, --lint.
Также есть CoffeeLint
Также есть CoffeeLint
Jquery собирается именно с этой штукой. Конфиг для jquery.
Спасибо за статью! Обязательно поиграюсь. В своих проектах я использую google closure compiler и все оптимизации производились именно им. Но то что вы описали звучит гораздо более интригующе
Как мне показалось, инструмент слишком уж «наворочен»: для чего ставить underscore, dateformat, соlors, gzip (по крайне мере ничего не сказано о выборочной установке)?
Кому нужно и так поставят JSHint и Uglify, а заархивируют и без того встроенным в *nix систему gzip.
Пользуясь случаем расскажу о своем сборщике файлов:
В шаблонизаторе можно вывести данные прямо в поток:
Либо создавать отдельный подключаемый файл:
У вас в шаблонизаторе, конечно это будет выглядеть иначе.
Из плюсов могу назвать гибкость, скорость работы и возможность подключить как Node-модуль.
Гибкость достигается за счет возможности передачи как списка параметров так и любого другого контейнера, а результат либо получается строка и бонус в ввиде файл с простой минификацией.
После компиляции бинарник можно поставить в хуки VCS .
Из минусов пока это, то что нет статического анализа кода, в следствии чего урезанная поддержка минификации и осутствие проверки кода на ошибки.
Кому нужно и так поставят JSHint и Uglify, а заархивируют и без того встроенным в *nix систему gzip.
Пользуясь случаем расскажу о своем сборщике файлов:
#include <iostream>
#include <list>
#include "require.hpp"
int main()
{
Require require;
// Путь к файлам (можно не указывать, в этом случае он должен быть назначен самим файлам)
std::string path("./files/");
// Имена файлов, можно передать строкой с любым символом-разделителем
std::string name("file_1.js;file_2.js;");
// Записать в любой STL контейнер, который поддерживает итератор std::back_inserter
std::list<std::string> file;
require.split(name, ';', std::back_inserter(file));
// Можно без сплита сразу в контейнер добавлять элементы: file.push_back("file_1.js");
// Загружаем файлы
if (require.load(file, path)) { // устанавливаем имя файла и общий путь (опционально)
// Получаем данные
// Если установлен флаг минификации, то вырезаются все комментарии, пробелы, табуляция и пере воды строк
std::string data(require.data(true /* Можно задать флаг минификации */));
// Сохраняем данные в файл
if (require.save(path + "file.js"))
std::cout << data << std::endl;
// Если файл уже существует и не нужно его перезаписывать, то вторым параметром можно указать флажек
// require.save(path + "./file.js", std::ios::app);
}
return 0;
}
В шаблонизаторе можно вывести данные прямо в поток:
<script type="text/javascript">
<param _expr="require" _initparams="path=/files/js/, file=core.js;widget.js" />
</script>
Либо создавать отдельный подключаемый файл:
<script type="text/javascript" _expr="require" _params="file as src" _initparams="path=/files/js/, file=core.js;widget.js"></script>
У вас в шаблонизаторе, конечно это будет выглядеть иначе.
Из плюсов могу назвать гибкость, скорость работы и возможность подключить как Node-модуль.
Гибкость достигается за счет возможности передачи как списка параметров так и любого другого контейнера, а результат либо получается строка и бонус в ввиде файл с простой минификацией.
После компиляции бинарник можно поставить в хуки VCS .
Из минусов пока это, то что нет статического анализа кода, в следствии чего урезанная поддержка минификации и осутствие проверки кода на ошибки.
>>> Как мне показалось, инструмент слишком уж «наворочен»: для чего ставить underscore, dateformat, соlors, gzip (по крайне мере ничего не сказано о выборочной установке)?
>>> Кому нужно и так поставят JSHint и Uglify, а заархивируют и без того встроенным в *nix систему gzip.
Или поставят grunt — так проще. Grunt — это свой «make» для JavaScript-а, с батарейками в комплекте — в этом его огромный плюс: вам не надо писать скрипты сборки, загружать доп. библиотеки и делать прочую работу.
>>> Кому нужно и так поставят JSHint и Uglify, а заархивируют и без того встроенным в *nix систему gzip.
Или поставят grunt — так проще. Grunt — это свой «make» для JavaScript-а, с батарейками в комплекте — в этом его огромный плюс: вам не надо писать скрипты сборки, загружать доп. библиотеки и делать прочую работу.
спасибо за перевод.
а что касается самой статьи: можно было писать более подробно по самой утилите, а не по процессу «нажимаю на кнопку… нажал… не сработало....»
а что касается самой статьи: можно было писать более подробно по самой утилите, а не по процессу «нажимаю на кнопку… нажал… не сработало....»
Хочется авторитетных мнений уважаемой публики по поводу вопроса —
Кто-нибудь использует grunt в качестве замены питоновского fabric?
Интересует та часть, которая про взаимодействие с ремотным хостом (ssh, scp, git, touch, ...), если вы понимаете о чем я.
Кто-нибудь использует grunt в качестве замены питоновского fabric?
Интересует та часть, которая про взаимодействие с ремотным хостом (ssh, scp, git, touch, ...), если вы понимаете о чем я.
Для grunt есть плагин для работы с SSH: npmjs.org/package/grunt-ssh
Ну и конечно никто не мешает написать свой task (ну это на любителя :))
Ну и конечно никто не мешает написать свой task (ну это на любителя :))
Sign up to leave a comment.
Grunt, инструмент для сборки javascript проектов