12

Алексей Иванов: немного о grunt.js #FrontTalks

Embed Size (px)

Citation preview

Page 1: Алексей Иванов: немного о grunt.js #FrontTalks
Page 2: Алексей Иванов: немного о grunt.js #FrontTalks

Что такое grunt.js• Инструмент для сборки проектов.

• Написан на node.js, устанавливается через npm.

• Запускается из консоли.

• Мы сегодня обсуждаем версию 0.4.0, в версии 0.3.x все сильно по-

другому.

Page 3: Алексей Иванов: немного о grunt.js #FrontTalks

Компоненты1. grunt — основное приложение, может ставиться как локально, так

и на system path. Запускает таски.

2. grunt-cli — глобальный враппер выбирающий использовать

локальную версию grunt или глобальную.

3. grunt-init — утилита занимающаяся разворачиванием новых

проектов по шаблонам.

4. Конкретные таски и шаблоны (тысячи их).

Page 4: Алексей Иванов: немного о grunt.js #FrontTalks

Какие бывают таски1. Запуск препроцессоров: less, stylus, coffeescript.

2. Сжатие css и js: yui, csso, uglify.js.

3. Проверка синтаксиса: csslint, jshint.

4. Запуск юнит-тестов: jasmine, qunit.

5. Обработка картинок и сборка спрайтов: imgo.

6. Сохранение скриншотов из html в статику: capser.js.

7. Автозапуск тасков при изменения в файлах и собственный сервер.

Page 5: Алексей Иванов: немного о grunt.js #FrontTalks

Настройка1. В корень проекта добавляется файл Gruntfile.js с конфигом.

2. Рядом с ним кладем файл package.json для установки grunt.js и

тасков (можно генерировать автоматом из шаблонов).

3. Перед первым запускам делаем npm install

4. Теперь таски и группы тасков можно запускать через консоль в папке

проекта.

Page 6: Алексей Иванов: немного о grunt.js #FrontTalks

Конфигmodule.exports = function( grunt ) {

grunt.initConfig({

// тут живут конфиги тасков

});

grunt.loadNpmTasks('grunt-sample');

grunt.registerTask('default', [ 'concat', 'sample' ]);

};

01.

02.

03.

04.

05.

06.

07.

Page 7: Алексей Иванов: немного о grunt.js #FrontTalks

Конфиг таскаjshint: {

src: [ "lib/**/*.js", "!lib/jquery.js" ],

options: {

curly: true,

globals: {

jQuery: true

}

}

}

01.

02.

03.

04.

05.

06.

07.

08.

09.

Page 8: Алексей Иванов: немного о grunt.js #FrontTalks

Конфиг мультитаскаhandlebars: {

compile: {

options: { namespace: "JST" },

files: {

"result.js": "path/to/source.hbs",

"another.js": ["path/*.hbs", "more/*.hbs"]

}

}

}

01.

02.

03.

04.

05.

06.

07.

08.

09.

Page 9: Алексей Иванов: немного о grunt.js #FrontTalks

Переназначение опцийhandlebars: {

compile: {

options: { namespace: "JST" },

files: {

"result.js": "path/to/source.hbs",

}

},

options: { namespace: false },

}

01.

02.

03.

04.

05.

06.

07.

08.

09.

Page 10: Алексей Иванов: немного о grunt.js #FrontTalks

Автогенерация src/deststyletto: {

files: [ {

expand: true,

src: [ 'i-reset/i-reset.styl', 'b-*/**/*.styl' ],

dest: 'publish/',

ext: '.css',

flatten: true

} ]

}

01.

02.

03.

04.

05.

06.

07.

08.

09.

Page 11: Алексей Иванов: немного о grunt.js #FrontTalks

Запуск из папки проекта1. grunt

2. grunt lint

3. grunt concat:main

Page 12: Алексей Иванов: немного о grunt.js #FrontTalks

Ссылки по теме1. https://github.com/gruntjs/grunt

2. https://github.com/gruntjs/grunt-cli

3. https://github.com/gruntjs/grunt-init