UNPKG

sekrab-gulpbin

Version:

sekrab gulp tasks shared amongst shut cricket and other libs

111 lines (80 loc) 3.53 kB
const gulp = require('gulp'); const inject = require('gulp-inject'); // one time use let options = require('../config.json'); // generate icons from styles generated by icomoons // prepare icons from remote folder that has the extracted files from icomoon tool if that is the case const _prepvars = function () { const { iconfontsPath, srcPath } = options; return gulp.src([iconfontsPath + 'variables.less', iconfontsPath + 'selection.json']) .pipe(gulp.dest(srcPath + 'dummy')); }; const _prepfonts = function () { const { iconfontsPath, distPath } = options; return gulp.src([iconfontsPath + 'fonts/*'], { encoding: false }) .pipe(gulp.dest(distPath + 'fonts')); } let liIconStr = ""; const _getLigas = function () { // TODO: test when task is not running from root (gulp by default runs from root unless --gulpfile is specified) // console.log('relative', path.relative( process.cwd(), `${options.srcPath}dummy/`)); var icons = require(`${process.cwd()}/${options.srcPath}dummy/selection.json`).icons; let array = {}; for (a of icons) { array[a.properties.name] = a.properties.ligatures; } return array; }; const _cssicons = function () { let returnStr = ""; const ligas = _getLigas(); const { srcPath } = options; return gulp.src(srcPath + 'less/ui.icons.less') .pipe(inject( gulp.src(srcPath + 'dummy/variables.less'), { starttag: '// inject:icons', endtag: '// endinject', transform: function (filePath, file) { // for ever @icon-arrow-all: "\e900"; generate @icon-arrow-all: "\e900"; .icon(icon-arrow-all, @icon-arrow-all); var lines = file.contents.toString('utf8').split('\n'); lines.forEach(function (value) { if (value.indexOf('@icon-') > -1) { // add to the line icon(something, icon); const name = value.split(":")[0]; value += " .icon({0},{1});\r\n" .replace("{0}", name.substring(1)) .replace("{1}", name); returnStr += value; liIconStr += '<li><span class="symbol {0}">{1}</span> <i>{2}</i></li>' .replace("{0}", name.substring(1)) .replace("{1}", name) .replace("{2}", ligas[name.substring(6)]); } }) return returnStr; } } )) .pipe(gulp.dest(srcPath + 'less/')); }; const _writeHtml = function () { const { srcPath } = options; return gulp.src(srcPath + 'dummy/iconset.html') .pipe(inject( gulp.src(srcPath + 'dummy/variables.less', { read: false }), { starttag: '<!-- inject:icons -->', endtag: '<!-- endinject -->', transform: function (filePath, file) { //just inject text as is return liIconStr; } } )) .pipe(gulp.dest(srcPath + 'dummy/')); }; module.exports = function (config) { options = { ...config.assets }; const prepicons = gulp.parallel(_prepfonts, _prepvars); const cssicons = gulp.series(_cssicons, _writeHtml); return gulp.series(prepicons, cssicons); }