direct-dev
Version:
Yandex Direct dev tools
39 lines (32 loc) • 1.53 kB
JavaScript
var through = require('through2');
var babel = require('babel-core');
var _ = require('lodash');
/*** Проверяет, нужно ли обрабатывать заданный файл
* @function filterFunction * @param {Object} file
* @param {String} file.path - полный путь к файлу
* @returns {Boolean} */
/** * Обрабатывает бабелем заданные файлы
* @param {Object} [options] - параметры обработчика
* @param {filterFunction} [options.filter] - функция, фильтрующая обрабатываемые файлы. Если не задана, обрабатываются все файлы.
* @param {Object} [options.babelOptions] - Параметры, которые нужно передать при вызове babel
* @returns {Stream} */
module.exports = function () {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var filter = options.filter,
babelOptions = options.babelOptions;
!filter && (filter = function filter(obj) {
return true;
});
return through.obj(function (file, encoding, cb) {
try {
if (filter(file)) {
var finalOptions = _.merge({ filename: file.path }, babelOptions || {});
file.contents = babel.transform(file.contents, finalOptions).code;
}
return cb(null, file);
} catch (ex) {
return cb(ex);
}
});
};
;