UNPKG

rump-styles

Version:

Rump piece for building CSS

109 lines (81 loc) 14.2 kB
'use strict'; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default']; var _convertSourceMap = require('convert-source-map'); var _convertSourceMap2 = _interopRequireDefault(_convertSourceMap); var _extend = require('extend'); var _extend2 = _interopRequireDefault(_extend); var _gulp = require('gulp'); var _gulp2 = _interopRequireDefault(_gulp); var _gulpPleeease = require('gulp-pleeease'); var _gulpPleeease2 = _interopRequireDefault(_gulpPleeease); var _gulpPlumber = require('gulp-plumber'); var _gulpPlumber2 = _interopRequireDefault(_gulpPlumber); var _gulpFilter = require('gulp-filter'); var _gulpFilter2 = _interopRequireDefault(_gulpFilter); var _gulpRename = require('gulp-rename'); var _gulpRename2 = _interopRequireDefault(_gulpRename); var _rump = require('rump'); var _rump2 = _interopRequireDefault(_rump); var _through2 = require('through2'); var _through22 = _interopRequireDefault(_through2); var _gulpUtil = require('gulp-util'); var _path = require('path'); var name = _rump2['default'].taskName.bind(_rump2['default']); var protocol = process.platform === 'win32' ? 'file:///' : 'file://'; var task = _gulp2['default'].task.bind(_gulp2['default']); var configs = _rump2['default'].configs; task(name('build:styles'), function () { var sourcePath = (0, _path.join)(configs.main.paths.source.root, configs.main.paths.source.styles); var source = (0, _path.join)(sourcePath, configs.main.globs.build.styles); var destination = (0, _path.join)(configs.main.paths.destination.root, configs.main.paths.destination.styles); var nonCssFilter = (0, _gulpFilter2['default'])(['**/*.{less,scss,styl}'], { restore: true }); var cssFilter = (0, _gulpFilter2['default'])(['**/*.css'], { restore: true }); var cssConfig = (0, _extend2['default'])({}, _rump2['default'].configs.pleeease, { less: false, sass: false, stylus: false }); var lessFilter = (0, _gulpFilter2['default'])(['**/*.less'], { restore: true }); var lessConfig = (0, _extend2['default'])({}, _rump2['default'].configs.pleeease, { sass: false, stylus: false }); var scssFilter = (0, _gulpFilter2['default'])(['**/*.scss'], { restore: true }); var scssConfig = (0, _extend2['default'])({}, _rump2['default'].configs.pleeease, { less: false, stylus: false }); var stylFilter = (0, _gulpFilter2['default'])(['**/*.styl'], { restore: true }); var stylConfig = (0, _extend2['default'])({}, _rump2['default'].configs.pleeease, { less: false, sass: false }); var sourceMap = configs.main.styles.sourceMap; return (0, _gulp.src)([source].concat(configs.main.globs.global)).pipe((configs.watch ? _gulpPlumber2['default'] : _gulpUtil.noop)()).pipe(cssFilter).pipe((0, _gulpPleeease2['default'])(cssConfig)).pipe(cssFilter.restore).pipe(lessFilter).pipe((0, _gulpPleeease2['default'])(lessConfig)).pipe(lessFilter.restore).pipe(scssFilter).pipe((0, _gulpPleeease2['default'])(scssConfig)).pipe(scssFilter.restore).pipe(stylFilter).pipe((0, _gulpPleeease2['default'])(stylConfig)).pipe(stylFilter.restore).pipe((sourceMap ? _through22['default'].obj : _gulpUtil.noop)(sourceMapRewriter)).pipe(nonCssFilter).pipe((0, _gulpRename2['default'])({ extname: '.css' })).pipe(nonCssFilter.restore).pipe((0, _gulp.dest)(destination)); // Clear out autoprefixer's data and fix paths to match original function sourceMapRewriter(file, enc, callback) { if (file.isNull()) { return callback(null, file); } var content = file.contents.toString(); var sourceMap = _convertSourceMap2['default'].fromSource(content), sources = sourceMap.getProperty('sources'); sourceMap.setProperty('sourceRoot', null); sourceMap.setProperty('sources', sources.map(rewriteUrl)); content = [_convertSourceMap2['default'].removeComments(content), '\n', '/*# sourceMappingURL=data:application/json;base64,', sourceMap.toBase64(), ' */'].join(''); file.contents = new Buffer(content); return callback(null, file); function rewriteUrl(url) { if (url === '<no-source>') { url = file.path; } else if (url === '<no-output>') { return ''; } else if (!/^(node_modules|bower_components)\//.test(url)) { url = (0, _path.join)(sourcePath, url); } return '' + protocol + (0, _path.resolve)(url).split(_path.sep).join('/'); } } }); _gulp.tasks[name('build')].dep.push(name('build:styles')); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ndWxwL2J1aWxkLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Z0NBQW9CLG9CQUFvQjs7OztzQkFDckIsUUFBUTs7OztvQkFDVSxNQUFNOzs7OzRCQUN0QixlQUFlOzs7OzJCQUNoQixjQUFjOzs7OzBCQUNmLGFBQWE7Ozs7MEJBQ2IsYUFBYTs7OztvQkFDZixNQUFNOzs7O3dCQUNILFVBQVU7Ozs7d0JBQ1gsV0FBVzs7b0JBQ0csTUFBTTs7QUFFakMsSUFBQSxJQUFJLEdBQUssa0JBQUssUUFBUSx5QkFBQTtBQUN0QixJQUFBLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxLQUFLLE9BQU8sR0FBRyxVQUFVLEdBQUcsU0FBUyxDQUFBO0FBQ2hFLElBQUEsSUFBSSxHQUFLLGtCQUFLLElBQUkseUJBQUE7SUFDakIsT0FBTyxxQkFBUCxPQUFPOztBQUVkLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsWUFBTTtBQUN6QixNQUFBLFVBQVUsR0FBRyxnQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDbkQsTUFBQSxNQUFNLEdBQUcsZ0JBQUssVUFBVSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUMxRCxNQUFBLFdBQVcsR0FBRyxnQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDekQsTUFBQSxZQUFZLEdBQUcsNkJBQU8sQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7QUFDakUsTUFB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LENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUEiLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29udmVydCBmcm9tICdjb252ZXJ0LXNvdXJjZS1tYXAnXG5pbXBvcnQgZXh0ZW5kIGZyb20gJ2V4dGVuZCdcbmltcG9ydCBndWxwLCB7ZGVzdCwgc3JjLCB0YXNrc30gZnJvbSAnZ3VscCdcbmltcG9ydCBwbGVlZWFzZSBmcm9tICdndWxwLXBsZWVlYXNlJ1xuaW1wb3J0IHBsdW1iZXIgZnJvbSAnZ3VscC1wbHVtYmVyJ1xuaW1wb3J0IGZpbHRlciBmcm9tICdndWxwLWZpbHRlcidcbmltcG9ydCByZW5hbWUgZnJvbSAnZ3VscC1yZW5hbWUnXG5pbXBvcnQgcnVtcCBmcm9tICdydW1wJ1xuaW1wb3J0IHRocm91Z2ggZnJvbSAndGhyb3VnaDInXG5pbXBvcnQge25vb3B9IGZyb20gJ2d1bHAtdXRpbCdcbmltcG9ydCB7am9pbiwgcmVzb2x2ZSwgc2VwfSBmcm9tICdwYXRoJ1xuXG5jb25zdCBuYW1lID0gOjpydW1wLnRhc2tOYW1lLFxuICAgICAgcHJvdG9jb2wgPSBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gJ2ZpbGU6Ly8vJyA6ICdmaWxlOi8vJyxcbiAgICAgIHRhc2sgPSA6Omd1bHAudGFzayxcbiAgICAgIHtjb25maWdzfSA9IHJ1bXBcblxudGFzayhuYW1lKCdidWlsZDpzdHlsZXMnKSwgKCkgPT4ge1xuICBjb25zdCBzb3VyY2VQYXRoID0gam9pbihjb25maWdzLm1haW4ucGF0aHMuc291cmNlLnJvb3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3MubWFpbi5wYXRocy5zb3VyY2Uuc3R5bGVzKSxcbiAgICAgICAgc291cmNlID0gam9pbihzb3VyY2VQYXRoLCBjb25maWdzLm1haW4uZ2xvYnMuYnVpbGQuc3R5bGVzKSxcbiAgICAgICAgZGVzdGluYXRpb24gPSBqb2luKGNvbmZpZ3MubWFpbi5wYXRocy5kZXN0aW5hdGlvbi5yb290LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlncy5tYWluLnBhdGhzLmRlc3RpbmF0aW9uLnN0eWxlcyksXG4gICAgICAgIG5vbkNzc0ZpbHRlciA9IGZpbHRlcihbJyoqLyoue2xlc3Msc2NzcyxzdHlsfSddLCB7cmVzdG9yZTogdHJ1ZX0pLFxuICAgICAgICBjc3NGaWx0ZXIgPSBmaWx0ZXIoWycqKi8qLmNzcyddLCB7cmVzdG9yZTogdHJ1ZX0pLFxuICAgICAgICBjc3NDb25maWcgPSBleHRlbmQoe30sIHJ1bXAuY29uZmlncy5wbGVlZWFzZSwge1xuICAgICAgICAgIGxlc3M6IGZhbHNlLFxuICAgICAgICAgIHNhc3M6IGZhbHNlLFxuICAgICAgICAgIHN0eWx1czogZmFsc2UsXG4gICAgICAgIH0pLFxuICAgICAgICBsZXNzRmlsdGVyID0gZmlsdGVyKFsnKiovKi5sZXNzJ10sIHtyZXN0b3JlOiB0cnVlfSksXG4gICAgICAgIGxlc3NDb25maWcgPSBleHRlbmQoe30sIHJ1bXAuY29uZmlncy5wbGVlZWFzZSwge1xuICAgICAgICAgIHNhc3M6IGZhbHNlLFxuICAgICAgICAgIHN0eWx1czogZmFsc2UsXG4gICAgICAgIH0pLFxuICAgICAgICBzY3NzRmlsdGVyID0gZmlsdGVyKFsnKiovKi5zY3NzJ10sIHtyZXN0b3JlOiB0cnVlfSksXG4gICAgICAgIHNjc3NDb25maWcgPSBleHRlbmQoe30sIHJ1bXAuY29uZmlncy5wbGVlZWFzZSwge1xuICAgICAgICAgIGxlc3M6IGZhbHNlLFxuICAgICAgICAgIHN0eWx1czogZmFsc2UsXG4gICAgICAgIH0pLFxuICAgICAgICBzdHlsRmlsdGVyID0gZmlsdGVyKFsnKiovKi5zdHlsJ10sIHtyZXN0b3JlOiB0cnVlfSksXG4gICAgICAgIHN0eWxDb25maWcgPSBleHRlbmQoe30sIHJ1bXAuY29uZmlncy5wbGVlZWFzZSwge1xuICAgICAgICAgIGxlc3M6IGZhbHNlLFxuICAgICAgICAgIHNhc3M6IGZhbHNlLFxuICAgICAgICB9KSxcbiAgICAgICAge3NvdXJjZU1hcH0gPSBjb25maWdzLm1haW4uc3R5bGVzXG5cbiAgcmV0dXJuIHNyYyhbc291cmNlXS5jb25jYXQoY29uZmlncy5tYWluLmdsb2JzLmdsb2JhbCkpXG4gICAgLnBpcGUoKGNvbmZpZ3Mud2F0Y2ggPyBwbHVtYmVyIDogbm9vcCkoKSlcbiAgICAucGlwZShjc3NGaWx0ZXIpXG4gICAgLnBpcGUocGxlZWVhc2UoY3NzQ29uZmlnKSlcbiAgICAucGlwZShjc3NGaWx0ZXIucmVzdG9yZSlcbiAgICAucGlwZShsZXNzRmlsdGVyKVxuICAgIC5waXBlKHBsZWVlYXNlKGxlc3NDb25maWcpKVxuICAgIC5waXBlKGxlc3NGaWx0ZXIucmVzdG9yZSlcbiAgICAucGlwZShzY3NzRmlsdGVyKVxuICAgIC5waXBlKHBsZWVlYXNlKHNjc3NDb25maWcpKVxuICAgIC5waXBlKHNjc3NGaWx0ZXIucmVzdG9yZSlcbiAgICAucGlwZShzdHlsRmlsdGVyKVxuICAgIC5waXBlKHBsZWVlYXNlKHN0eWxDb25maWcpKVxuICAgIC5waXBlKHN0eWxGaWx0ZXIucmVzdG9yZSlcbiAgICAucGlwZSgoc291cmNlTWFwID8gdGhyb3VnaC5vYmogOiBub29wKShzb3VyY2VNYXBSZXdyaXRlcikpXG4gICAgLnBpcGUobm9uQ3NzRmlsdGVyKVxuICAgIC5waXBlKHJlbmFtZSh7ZXh0bmFtZTogJy5jc3MnfSkpXG4gICAgLnBpcGUobm9uQ3NzRmlsdGVyLnJlc3RvcmUpXG4gICAgLnBpcGUoZGVzdChkZXN0aW5hdGlvbikpXG5cbiAgLy8gQ2xlYXIgb3V0IGF1dG9wcmVmaXhlcidzIGRhdGEgYW5kIGZpeCBwYXRocyB0byBtYXRjaCBvcmlnaW5hbFxuICBmdW5jdGlvbiBzb3VyY2VNYXBSZXdyaXRlcihmaWxlLCBlbmMsIGNhbGxiYWNrKSB7XG4gICAgaWYoZmlsZS5pc051bGwoKSkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGZpbGUpXG4gICAgfVxuXG4gICAgbGV0IGNvbnRlbnQgPSBmaWxlLmNvbnRlbnRzLnRvU3RyaW5nKClcbiAgICBjb25zdCBzb3VyY2VNYXAgPSBjb252ZXJ0LmZyb21Tb3VyY2UoY29udGVudCksXG4gICAgICAgICAgc291cmNlcyA9IHNvdXJjZU1hcC5nZXRQcm9wZXJ0eSgnc291cmNlcycpXG4gICAgc291cmNlTWFwLnNldFByb3BlcnR5KCdzb3VyY2VSb290JywgbnVsbClcbiAgICBzb3VyY2VNYXAuc2V0UHJvcGVydHkoJ3NvdXJjZXMnLCBzb3VyY2VzLm1hcChyZXdyaXRlVXJsKSlcbiAgICBjb250ZW50ID0gW1xuICAgICAgY29udmVydC5yZW1vdmVDb21tZW50cyhjb250ZW50KSxcbiAgICAgICdcXG4nLFxuICAgICAgJy8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsJyxcbiAgICAgIHNvdXJjZU1hcC50b0Jhc2U2NCgpLFxuICAgICAgJyAqLycsXG4gICAgXS5qb2luKCcnKVxuICAgIGZpbGUuY29udGVudHMgPSBuZXcgQnVmZmVyKGNvbnRlbnQpXG4gICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGZpbGUpXG5cbiAgICBmdW5jdGlvbiByZXdyaXRlVXJsKHVybCkge1xuICAgICAgaWYodXJsID09PSAnPG5vLXNvdXJjZT4nKSB7XG4gICAgICAgIHVybCA9IGZpbGUucGF0aFxuICAgICAgfVxuICAgICAgZWxzZSBpZih1cmwgPT09ICc8bm8tb3V0cHV0PicpIHtcbiAgICAgICAgcmV0dXJuICcnXG4gICAgICB9XG4gICAgICBlbHNlIGlmKCEvXihub2RlX21vZHVsZXN8Ym93ZXJfY29tcG9uZW50cylcXC8vLnRlc3QodXJsKSkge1xuICAgICAgICB1cmwgPSBqb2luKHNvdXJjZVBhdGgsIHVybClcbiAgICAgIH1cbiAgICAgIHJldHVybiBgJHtwcm90b2NvbH0ke3Jlc29sdmUodXJsKS5zcGxpdChzZXApLmpvaW4oJy8nKX1gXG4gICAgfVxuICB9XG59KVxuXG50YXNrc1tuYW1lKCdidWlsZCcpXS5kZXAucHVzaChuYW1lKCdidWlsZDpzdHlsZXMnKSlcbiJdfQ==