Как стать автором
Обновить

Комментарии 15

Не знаю… За все время работы с компьютером так и не смог заставить себя полюбить командную строку. Иногда без нее никак, но если есть выбор GUI vs CL, я всегда выбираю первое.
Ах да, это не пропаганда, я просто высказал свое отношение к командной строке )
Нам важно Ваше мнение, держите нас в курсе.
Какую ОС вы используете по-умолчанию?
Хотел спросить, умеет ли работать с CoffeeScript, но не поленился пройти по нижней ссылке и узнал, что таки работает. Крутая вещь. Спасибо.
В CoffeeScript принято использовать jsl, для которого предусмотрен ключ -l, --lint.
Также есть CoffeeLint
НЛО прилетело и опубликовало эту надпись здесь
Спасибо за статью! Обязательно поиграюсь. В своих проектах я использую google closure compiler и все оптимизации производились именно им. Но то что вы описали звучит гораздо более интригующе
Как мне показалось, инструмент слишком уж «наворочен»: для чего ставить underscore, dateformat, соlors, gzip (по крайне мере ничего не сказано о выборочной установке)?
Кому нужно и так поставят 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-а, с батарейками в комплекте — в этом его огромный плюс: вам не надо писать скрипты сборки, загружать доп. библиотеки и делать прочую работу.
спасибо за перевод.
а что касается самой статьи: можно было писать более подробно по самой утилите, а не по процессу «нажимаю на кнопку… нажал… не сработало....»
Хочется авторитетных мнений уважаемой публики по поводу вопроса —

Кто-нибудь использует grunt в качестве замены питоновского fabric?

Интересует та часть, которая про взаимодействие с ремотным хостом (ssh, scp, git, touch, ...), если вы понимаете о чем я.
Для grunt есть плагин для работы с SSH: npmjs.org/package/grunt-ssh

Ну и конечно никто не мешает написать свой task (ну это на любителя :))
Да, плагин я видел этот, т.е. я правильно понял, что готовой замены Fabric пока нет.

Ну ладно, будет время, перепишу свои несложные скиптики на grunt.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации