Update fomantic-ui to 2.8.5 (#11736)
Update to [2.8.5](https://github.com/fomantic/Fomantic-UI/releases/tag/2.8.5) and remove the workaround for the CSS build race condition. Co-authored-by: techknowlogick <techknowlogick@gitea.io>tokarchuk/v1.17
parent
a3b185d54c
commit
3affe9516a
@ -1,260 +0,0 @@ |
|||||||
/******************************* |
|
||||||
* Build Task |
|
||||||
*******************************/ |
|
||||||
|
|
||||||
const |
|
||||||
gulp = require('gulp'), |
|
||||||
|
|
||||||
// node dependencies
|
|
||||||
console = require('better-console'), |
|
||||||
|
|
||||||
// gulp dependencies
|
|
||||||
autoprefixer = require('gulp-autoprefixer'), |
|
||||||
chmod = require('gulp-chmod'), |
|
||||||
concatCSS = require('gulp-concat-css'), |
|
||||||
dedupe = require('gulp-dedupe'), |
|
||||||
flatten = require('gulp-flatten'), |
|
||||||
gulpif = require('gulp-if'), |
|
||||||
header = require('gulp-header'), |
|
||||||
less = require('gulp-less'), |
|
||||||
minifyCSS = require('gulp-clean-css'), |
|
||||||
normalize = require('normalize-path'), |
|
||||||
plumber = require('gulp-plumber'), |
|
||||||
print = require('gulp-print').default, |
|
||||||
rename = require('gulp-rename'), |
|
||||||
replace = require('gulp-replace'), |
|
||||||
replaceExt = require('replace-ext'), |
|
||||||
rtlcss = require('gulp-rtlcss'), |
|
||||||
|
|
||||||
// config
|
|
||||||
config = require('./../config/user'), |
|
||||||
docsConfig = require('./../config/docs'), |
|
||||||
tasks = require('../config/tasks'), |
|
||||||
install = require('../config/project/install'), |
|
||||||
|
|
||||||
// shorthand
|
|
||||||
globs = config.globs, |
|
||||||
assets = config.paths.assets, |
|
||||||
|
|
||||||
banner = tasks.banner, |
|
||||||
filenames = tasks.filenames, |
|
||||||
comments = tasks.regExp.comments, |
|
||||||
log = tasks.log, |
|
||||||
settings = tasks.settings |
|
||||||
; |
|
||||||
|
|
||||||
/** |
|
||||||
* Builds the css |
|
||||||
* @param src |
|
||||||
* @param type |
|
||||||
* @param compress |
|
||||||
* @param config |
|
||||||
* @param opts |
|
||||||
* @return {*} |
|
||||||
*/ |
|
||||||
function build(src, type, compress, config, opts) { |
|
||||||
let fileExtension; |
|
||||||
if (type === 'rtl' && compress) { |
|
||||||
fileExtension = settings.rename.rtlMinCSS; |
|
||||||
} else if (type === 'rtl') { |
|
||||||
fileExtension = settings.rename.rtlCSS; |
|
||||||
} else if (compress) { |
|
||||||
fileExtension = settings.rename.minCSS; |
|
||||||
} |
|
||||||
|
|
||||||
return gulp.src(src, opts) |
|
||||||
.pipe(plumber(settings.plumber.less)) |
|
||||||
.pipe(less(settings.less)) |
|
||||||
.pipe(autoprefixer(settings.prefix)) |
|
||||||
.pipe(gulpif(type === 'rtl', rtlcss())) |
|
||||||
.pipe(replace(comments.variables.in, comments.variables.out)) |
|
||||||
.pipe(replace(comments.license.in, comments.license.out)) |
|
||||||
.pipe(replace(comments.large.in, comments.large.out)) |
|
||||||
.pipe(replace(comments.small.in, comments.small.out)) |
|
||||||
.pipe(replace(comments.tiny.in, comments.tiny.out)) |
|
||||||
.pipe(flatten()) |
|
||||||
.pipe(replace(config.paths.assets.source, |
|
||||||
compress ? config.paths.assets.compressed : config.paths.assets.uncompressed)) |
|
||||||
.pipe(gulpif(compress, minifyCSS(settings.minify))) |
|
||||||
.pipe(gulpif(fileExtension, rename(fileExtension))) |
|
||||||
.pipe(gulpif(config.hasPermissions, chmod(config.parsedPermissions))) |
|
||||||
.pipe(gulp.dest(compress ? config.paths.output.compressed : config.paths.output.uncompressed)) |
|
||||||
.pipe(print(log.created)) |
|
||||||
; |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* Packages the css files in dist |
|
||||||
* @param {string} type - type of the css processing (none, rtl, docs) |
|
||||||
* @param {boolean} compress - should the output be compressed |
|
||||||
*/ |
|
||||||
function pack(type, compress) { |
|
||||||
const output = type === 'docs' ? docsConfig.paths.output : config.paths.output; |
|
||||||
const ignoredGlobs = type === 'rtl' ? globs.ignoredRTL + '.rtl.css' : globs.ignored + '.css'; |
|
||||||
|
|
||||||
let concatenatedCSS; |
|
||||||
if (type === 'rtl') { |
|
||||||
concatenatedCSS = compress ? filenames.concatenatedMinifiedRTLCSS : filenames.concatenatedRTLCSS; |
|
||||||
} else { |
|
||||||
concatenatedCSS = compress ? filenames.concatenatedMinifiedCSS : filenames.concatenatedCSS; |
|
||||||
} |
|
||||||
|
|
||||||
return gulp.src(output.uncompressed + '/**/' + globs.components + ignoredGlobs) |
|
||||||
.pipe(plumber()) |
|
||||||
.pipe(dedupe()) |
|
||||||
.pipe(replace(assets.uncompressed, assets.packaged)) |
|
||||||
.pipe(concatCSS(concatenatedCSS, settings.concatCSS)) |
|
||||||
.pipe(gulpif(config.hasPermissions, chmod(config.parsedPermissions))) |
|
||||||
.pipe(gulpif(compress, minifyCSS(settings.concatMinify))) |
|
||||||
.pipe(header(banner, settings.header)) |
|
||||||
.pipe(gulp.dest(output.packaged)) |
|
||||||
.pipe(print(log.created)) |
|
||||||
; |
|
||||||
} |
|
||||||
|
|
||||||
function buildCSS(src, type, config, opts, callback) { |
|
||||||
if (!install.isSetup()) { |
|
||||||
console.error('Cannot build CSS files. Run "gulp install" to set-up Semantic'); |
|
||||||
callback(); |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
if (callback === undefined) { |
|
||||||
callback = opts; |
|
||||||
opts = config; |
|
||||||
config = type; |
|
||||||
type = src; |
|
||||||
src = config.paths.source.definitions + '/**/' + config.globs.components + '.less'; |
|
||||||
} |
|
||||||
|
|
||||||
const buildUncompressed = () => build(src, type, false, config, opts); |
|
||||||
buildUncompressed.displayName = 'Building uncompressed CSS'; |
|
||||||
|
|
||||||
const buildCompressed = () => build(src, type, true, config, opts); |
|
||||||
buildCompressed.displayName = 'Building compressed CSS'; |
|
||||||
|
|
||||||
const packUncompressed = () => pack(type, false); |
|
||||||
packUncompressed.displayName = 'Packing uncompressed CSS'; |
|
||||||
|
|
||||||
const packCompressed = () => pack(type, true); |
|
||||||
packCompressed.displayName = 'Packing compressed CSS'; |
|
||||||
|
|
||||||
gulp.parallel( |
|
||||||
gulp.series( |
|
||||||
buildUncompressed, |
|
||||||
gulp.parallel(packUncompressed, packCompressed) |
|
||||||
), |
|
||||||
gulp.series(buildCompressed) |
|
||||||
)(callback); |
|
||||||
} |
|
||||||
|
|
||||||
function rtlAndNormal(src, callback) { |
|
||||||
if (callback === undefined) { |
|
||||||
callback = src; |
|
||||||
src = config.paths.source.definitions + '/**/' + config.globs.components + '.less'; |
|
||||||
} |
|
||||||
|
|
||||||
const rtl = (callback) => buildCSS(src, 'rtl', config, {}, callback); |
|
||||||
rtl.displayName = "CSS Right-To-Left"; |
|
||||||
const css = (callback) => buildCSS(src, 'default', config, {}, callback); |
|
||||||
css.displayName = "CSS"; |
|
||||||
|
|
||||||
if (config.rtl === true || config.rtl === 'Yes') { |
|
||||||
rtl(callback); |
|
||||||
} else if (config.rtl === 'both') { |
|
||||||
gulp.series(rtl, css)(callback); |
|
||||||
} else { |
|
||||||
css(callback); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
function docs(src, callback) { |
|
||||||
if (callback === undefined) { |
|
||||||
callback = src; |
|
||||||
src = config.paths.source.definitions + '/**/' + config.globs.components + '.less'; |
|
||||||
} |
|
||||||
|
|
||||||
const func = (callback) => buildCSS(src, 'docs', config, {}, callback); |
|
||||||
func.displayName = "CSS Docs"; |
|
||||||
|
|
||||||
func(callback); |
|
||||||
} |
|
||||||
|
|
||||||
// Default tasks
|
|
||||||
module.exports = rtlAndNormal; |
|
||||||
|
|
||||||
// We keep the changed files in an array to call build with all of them at the same time
|
|
||||||
let timeout, files = []; |
|
||||||
|
|
||||||
/** |
|
||||||
* Watch changes in CSS files and call the correct build pipe |
|
||||||
* @param type |
|
||||||
* @param config |
|
||||||
*/ |
|
||||||
module.exports.watch = function (type, config) { |
|
||||||
const method = type === 'docs' ? docs : rtlAndNormal; |
|
||||||
|
|
||||||
// Watch theme.config file
|
|
||||||
gulp.watch([ |
|
||||||
normalize(config.paths.source.config), |
|
||||||
normalize(config.paths.source.site + '/**/site.variables'), |
|
||||||
normalize(config.paths.source.themes + '/**/site.variables') |
|
||||||
]) |
|
||||||
.on('all', function () { |
|
||||||
// Clear timeout and reset files
|
|
||||||
timeout && clearTimeout(timeout); |
|
||||||
files = []; |
|
||||||
return gulp.series(method)(); |
|
||||||
}); |
|
||||||
|
|
||||||
// Watch any less / overrides / variables files
|
|
||||||
gulp.watch([ |
|
||||||
normalize(config.paths.source.definitions + '/**/*.less'), |
|
||||||
normalize(config.paths.source.site + '/**/*.{overrides,variables}'), |
|
||||||
normalize(config.paths.source.themes + '/**/*.{overrides,variables}') |
|
||||||
]) |
|
||||||
.on('all', function (event, path) { |
|
||||||
// We don't handle deleted files yet
|
|
||||||
if (event === 'unlink' || event === 'unlinkDir') { |
|
||||||
return; |
|
||||||
} |
|
||||||
|
|
||||||
// Clear timeout
|
|
||||||
timeout && clearTimeout(timeout); |
|
||||||
|
|
||||||
// Determine which LESS file has to be recompiled
|
|
||||||
let lessPath; |
|
||||||
if(path.indexOf('site.variables') !== -1) { |
|
||||||
return; |
|
||||||
} else if (path.indexOf(config.paths.source.themes) !== -1) { |
|
||||||
console.log('Change detected in packaged theme'); |
|
||||||
lessPath = replaceExt(path, '.less'); |
|
||||||
lessPath = lessPath.replace(tasks.regExp.theme, config.paths.source.definitions); |
|
||||||
} else if (path.indexOf(config.paths.source.site) !== -1) { |
|
||||||
console.log('Change detected in site theme'); |
|
||||||
lessPath = replaceExt(path, '.less'); |
|
||||||
lessPath = lessPath.replace(config.paths.source.site, config.paths.source.definitions); |
|
||||||
} else { |
|
||||||
console.log('Change detected in definition'); |
|
||||||
lessPath = path; |
|
||||||
} |
|
||||||
|
|
||||||
// Add file to internal changed files array
|
|
||||||
if (!files.includes(lessPath)) { |
|
||||||
files.push(lessPath); |
|
||||||
} |
|
||||||
|
|
||||||
// Update timeout
|
|
||||||
timeout = setTimeout(() => { |
|
||||||
// Copy files to build in another array
|
|
||||||
const buildFiles = [...files]; |
|
||||||
// Call method
|
|
||||||
gulp.series((callback) => method(buildFiles, callback))(); |
|
||||||
// Reset internal changed files array
|
|
||||||
files = []; |
|
||||||
}, 1000); |
|
||||||
}); |
|
||||||
}; |
|
||||||
|
|
||||||
// Expose build css method
|
|
||||||
module.exports.buildCSS = buildCSS; |
|
Loading…
Reference in new issue