UNPKG

enb

Version:

Faster BEM/BEViS assembler

72 lines (60 loc) 2.5 kB
var path = require('path'); var vow = require('vow'); var MakePlatform = require('../make'); var cdir = process.cwd(); /** * Запускает сборку. * Может запустить либо сборку таргетов, либо запуск тасков. * * @param {String[]} [targets] Список целей в файловой системе, которые нужно собрать. * @param {Object} [options] * @param {String} [options.dir=process.cwd()] Корень проекта. * @param {String} [options.mode=development] Режим сборки. * @param {Object} [options.config] Конфиг сборки. По умолчанию загружается из `.enb/make.js`. * @param {Boolean} [options.cache=true] Учитывать кэш при запуске таска. * @param {Boolean} [options.graph=false] Выводить граф сборки. * @param {Boolean} [options.hideWarnings=false] Не выводить warning-сообщения в консоль. * @returns {Promise} */ module.exports = function (targets, options) { targets = targets || []; options = options || {}; if (arguments.length === 1 && typeof targets === 'object') { options = targets; targets = []; } var makePlatform = new MakePlatform(); var root = path.resolve(options.dir || cdir); var cache = options.hasOwnProperty('cache') ? options.cache : true; var logger; var graph; return makePlatform.init(root, options.mode, options.config) .then(function () { logger = makePlatform.getLogger(); if (options.graph) { graph = makePlatform.getBuildGraph(); } if (options.hideWarnings) { logger.hideWarnings(); } if (cache) { makePlatform.loadCache(); } return makePlatform.build(targets) .then(function () { if (graph) { console.log(graph.render()); } return vow.when(makePlatform.saveCacheAsync(), makePlatform.destruct.bind(makePlatform)); }); }) .fail(function (err) { if (graph) { console.log(graph.render()); } if (logger) { logger.log('build failed'); } throw err; }); };