diff --git a/README.md b/README.md index d584c58..0216b52 100644 --- a/README.md +++ b/README.md @@ -26,31 +26,6 @@ grunt.loadNpmTasks('grunt-bemaker'); ### Опции -#### Опция `verbose` - -Тип: `string[]` - -В процессе сборки выводятся различные типы сообщений. - -По умолчанию выводятся все типы сообщений. -Опция `verbose` позволяет настроить вывод только некоторых типов. - -Выводимые сообщения делятся на следующие типы: - -1. `log` — информация о процессе сборки (синим цветом) -2. `info` — сообщение о результате сборки (зелёным) -3. `warn` — предупреждения (жёлтым) -4. `error` — ошибки (красным) - -Следующий пример будет выводить только предупреждения и ошибки: - -```js -{ - verbose: ['warn', 'error'] -} -``` - - #### Опция `directories` Тип: `string[]` @@ -167,11 +142,11 @@ _Обязательный_ } ``` -#### Опция `before` +#### Опции `before` и `after` -Тип: `boolean` +Тип: `boolean|Function` -Опция отменяет установку комментария перед содержимым каждого файла. +Опции отменяют или изменяют комментарий перед и после содержимого каждого файла. По умолчанию в собранном файле перед содержимым каждого файла устанавливается такого вида комментарий: @@ -179,7 +154,7 @@ _Обязательный_ /* before: blocks/button/button.css */ ``` -Следующий пример отменяет установку комментария: +Следующий пример отменяет установку этого комментария: ```js { @@ -187,22 +162,20 @@ _Обязательный_ } ``` -#### Опция `after` - -Тип: `boolean` - -Опция отменяет установку комментария после содержимого каждого файла. - -По умолчанию в собранном файле после содержимого каждого файла устанавливается такого вида комментарий: - -```css -/* after: blocks/button/button.css */ -``` +Для изменения комментария можно указать функцию, которая должна возвращать строку +и принимает следующие параметры: +- {string} `absPath` Абсолютный путь до файла +- {string} `relPath` Относительный путь до файла +- {string} `extname` Полное расширение файла (например для `file.ie.css` будет `.ie.css`) +- {number} `index` Индекс файла +- {number} `length` Количество файлов -Следующий пример отменяет установку комментария: +Пример изменения комментария: ```js { - after: false + before: function(absPath, relPath, extname, index, length) { + return '/* custom before: ' + absPath + ' */\n'; + } } ``` diff --git a/package.json b/package.json index 6c2bcae..8ce18b9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "grunt-bemaker", "description": "Plugin to build BEM project", - "version": "0.1.1", + "version": "0.2.0", "repository": { "type": "git", "url": "https://github.com/tenorok/grunt-bemaker.git" @@ -13,7 +13,7 @@ }, "license": "MIT", "dependencies": { - "bemaker": "~0.1.3", + "bemaker": "~0.2.0", "moment": "~2.7.0" } } diff --git a/tasks/bemaker.js b/tasks/bemaker.js index 2a9d6df..d27866f 100644 --- a/tasks/bemaker.js +++ b/tasks/bemaker.js @@ -14,8 +14,7 @@ module.exports = function(grunt) { data = this.data, cli = new Cli(), - timeStart = moment(), - verbose; + timeStart = moment(); cli.verboseAliases = { log: { log: console.log }, @@ -24,13 +23,7 @@ module.exports = function(grunt) { error: { error: console.error } }; - if(data.verbose) { - verbose = cli.resolveVerboseAliases(data.verbose.toString()); - } - - var log = new Log(verbose); - - log.info({ text: 'build started' }); + var log = new Log({}); var make = new Make({ directories: Cli.resolveAbsolutePath(data.directories || []), @@ -46,55 +39,72 @@ module.exports = function(grunt) { make .on('level', function(data) { - log.log({ + grunt.verbose.writeln(log.log({ operation: 'walk', path: data.path, description: 'directory' - }); + })); }) .on('block', function(data) { - log.log({ + grunt.verbose.writeln(log.log({ operation: 'walk', text: data.name, description: 'block' - }); + })); }) .on('file', function(data) { - log.log({ + grunt.verbose.writeln(log.log({ operation: 'walk', path: data.path, description: 'file' - }); + })); }) .on('depend', function(data) { - log.log({ + grunt.verbose.writeln(log.log({ operation: 'read', path: data.path, description: 'dependencies' - }); + })); }) .on('filter', function(data) { - log.log({ + grunt.verbose.writeln(log.log({ operation: 'filter', text: data.block - }); + })); }) .on('extension', function(data) { - log.log({ + grunt.verbose.writeln(log.log({ operation: 'group', text: data.name, description: 'extension' - }); + })); }) .on('save', function(data) { - log.info({ + grunt.log.writeln(log.info({ operation: 'write', path: data.path - }); + })); + }) + .on('loop', function(branch) { + grunt.log.writeln(log.warn({ + operation: 'loop', + text: branch.join(' → ') + })); + }) + .on('unexist', function(data) { + var blocks = []; + if(data.name) { + blocks.push(data.name); + } + blocks.push(data.require); + grunt.log.writeln(log.warn({ + operation: 'unexist', + text: blocks.join(' → ') + })); }); make.build().then(function() { - log.info({ text: 'build finished', total: moment() - timeStart }); + grunt.log.writeln(log.info({ text: 'total time', total: moment() - timeStart })); done(); }); });