Grunt - javascript task runner. Утилита сборки для джаваскрипта, ака ant для Java.
Разделена на три разных node модуля:
1.
2.
3.
И так мы можем пользоваться готовыми тасками ядра или создавать собственные.
Таски ядра все вынесены в отдельные плагины гранта(npm модули). Вот список существующих на данный момент тасков:
Чтобы оживить грант в нашем проекте нам нужно в нем разместить файл Gruntfile.js. При этом наш проект должен быть правильным npm модулем и в его зависимостях должен находиться grunt. Вот пример файла пакета такого модуля package.json:
Можем сразу заметить, что мы стразу также подвязываем кор-таски(отдельные npm-модули) к зависимостям модуля.
Теперь сделав
Мы обеспечим в нашем проекте все установленные модули необходимы для гранта, на все эти модули зависимости используются сдесь Gruntfile.js.
Впринципе мы можем сделать все это по другому:
Кстати также большиство шаблонов
Вот пример Gruntfile.js:
Разделена на три разных node модуля:
1.
grunt - модуль, который нужно устанавливать локально в проект $ npm i grunt. Именно в нем содержится код и логика, которые запускают таски, загружают плагины.2.
grunt-cli - модуль, который устанавливается глобально $ npm i -g grunt, его задача состоит в том, чтобы мы могли выполнить таск в любом месте проекта - он просто подымается по каталогу вверх и находит установленный grunt в папке node_modules и запускает его.3.
grunt-init - модуль, который также нужно установить глобально $ npm i -g grunt-init / Это утилита "строительные леса", которая вынесла таск init гранта в отдельный модуль, и позволяет пользуясь шаблонами, которые размещаются ~/.grunt-init/*(они устанавливаются тоже модулями npm как плагины гранта, но как-то попадают туда), создавать разные заготовки заготовки. Этот модуль планируется быть замененным модулем Yo(http://yeoman.io/).И так мы можем пользоваться готовыми тасками ядра или создавать собственные.
Таски ядра все вынесены в отдельные плагины гранта(npm модули). Вот список существующих на данный момент тасков:
- concat → grunt-contrib-concat plugin
- init → stand-alone grunt-init utility
- lint → grunt-contrib-jshint plugin
- min → grunt-contrib-uglify plugin
- qunit → grunt-contrib-qunit plugin
- server → grunt-contrib-connect plugin
- test → grunt-contrib-nodeunit plugin
- watch → grunt-contrib-watch plugin
Чтобы оживить грант в нашем проекте нам нужно в нем разместить файл Gruntfile.js. При этом наш проект должен быть правильным npm модулем и в его зависимостях должен находиться grunt. Вот пример файла пакета такого модуля package.json:
{
"name": "my-project-name",
"version": "0.1.0",
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-jshint": "~0.6.0",
"grunt-contrib-nodeunit": "~0.2.0",
"grunt-contrib-uglify": "~0.2.2"
}
}
Можем сразу заметить, что мы стразу также подвязываем кор-таски(отдельные npm-модули) к зависимостям модуля.
Теперь сделав
npm install
Мы обеспечим в нашем проекте все установленные модули необходимы для гранта, на все эти модули зависимости используются сдесь Gruntfile.js.
Впринципе мы можем сделать все это по другому:
$ npm init $ npm install grunt --save-dev $ npm install grunt-contrib-jshint --save-dev $ npm install grunt-contrib-nodeunit --save-dev $ npm install grunt-contrib-uglify --save-devТак мы получим все депенденси в package.json.
Кстати также большиство шаблонов
grunt-init устанавливают заполненный package.json.Вот пример Gruntfile.js:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
// проперти - любые поля этого обьекта, которые не соответсвуют ни одному таску
pkg: grunt.file.readJSON('package.json'), //подгрузить инфу о проекте и пользоваться ее как пропертями
uglify: {
options: {
//ниже примеры шаблонов, которые могут пользоваться данными из пропертей,
//а также запускать функции гранта
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build: {
src: 'src/<%= pkg.name %>.js',
dest: 'build/<%= pkg.name %>.min.js'
}
}
});
// Load the plugin that provides the "uglify" task.
// * из установленных модулей нашего проекта(node_modules)
grunt.loadNpmTasks('grunt-contrib-uglify');
// Default task(s).
grunt.registerTask('default', ['uglify']);
};
Комментариев нет:
Отправить комментарий