Pull to refresh

Comments 13

Моё знакомство с Grunt было через проект Yeoman. Весьма удобная вещь.

Получаешь фреймворк для разработки, в котором установлены основные опции для Grunt и есть интерфейс для создания как скелета проекта так и добавление отдельных файлов.
Нужен контролллер для приложения AngularJS?

$ yo angular:controller --coffee

и получаем скелет файла контроллера, плюс обновлённый файл index.html с подключённым новосозданным файлом.
Генераторы Йомена скоро заменят grunt-init, так что и тут будет возможность добавлять котролеры и прочие ништяки.
А не подскажите как теперь нужно вызывать например 'concat' в своем плагине. Раньше делал так:

var combined = grunt.helper('concat', src, { separator: '' });

Как теперь правильно использовать новый grunt-contrib-concat?
Свои плагины я не писал, поэтому могу этим ответом попасть пальцем в небо :-)
Здесь пишут, что система хэлперов была удалена в пользу нодовского require. Там же отсылают к этому примеру.
Спасибо, а можно ли вообще использовать другие сторонние плагины скажем отсюда в своих собственных?
Некоторые можно. Где какая-то полезная функциональность вынесена в отдельный модуль. Вот так, например. Используется примерно так. Сам пока не пробовал.
А в 0.5 вообще вот так хотят сделать, можно будет даже не используя Грант подключать задачи для него.
> Сам grunt теперь ставится локально в папку проекта: npm install grunt

У меня в работе с десяток проектов, у каждого есть ветки… и такой подход мне кажется безумием. Я читал на эту тему эссе разработчика, там есть рациональное зерно, но мне так жить не удобно. Решение проблемы очень простое. Ставим всё глобально (и grunt 0.4, и плагины) и в node_modules/grunt/lib/grunt/task.js подправляем task.loadNpmTasks, заменив
var root = path.resolve('node_modules');
на
var root = path.resolve('путь, куда встало всё при глобальной установке', 'node_modules');

Теперь будет работать всё везде, как было в 0.3.

Подобный патч автору присылали много раз, но он принципиально не хочет так делать.
Можно ещё попробовать использовать npm link.
Хорошая статья. Только надо было упомянуть о package.json. Взял для себя за правило ложить его в папку репозитория для облегчения развертывания фронтенда у других разработчиков. Фактически, им нужно выполнить

npm install -g grunt-cli
npm install

в папке проекта — npm сам выгребет grunt и необходимые для него зависимости, которые указаны в package.json. В вашем случае содержание package.json будет таким:

{
    "version": "0.1.0",
    "devDependencies": {
        "grunt": "~0.4.0",
        "grunt-contrib-concat": "",
        "grunt-contrib-jshint": "",
        "grunt-contrib-uglify": "",
        "grunt-contrib-qunit": "",
        "grunt-contrib-watch": "",
        "grunt-contrib-stylus": ""
    }
}
Статья больше о миграции, нежели о гранте и установке модулей. Упоминание в статье есть здесь:
При установке рекомендуется использовать параметр --save-dev, чтобы автоматически обновлялись зависимости devDependencies в package.json.

По сути — да, все правильно делаете :)
Только не забывайте версии плагинов тоже указывать (npm i grunt-contrib-concat -D), иначе при очередном крупном обновлении Гранта всё сломается.
Only those users with full accounts are able to leave comments. Log in, please.