diff options
Diffstat (limited to 'semantic/tasks/build/javascript.js')
| -rw-r--r-- | semantic/tasks/build/javascript.js | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/semantic/tasks/build/javascript.js b/semantic/tasks/build/javascript.js deleted file mode 100644 index 0b27fac..0000000 --- a/semantic/tasks/build/javascript.js +++ /dev/null @@ -1,159 +0,0 @@ -/******************************* - Build Task - *******************************/ - -const - gulp = require('gulp'), - - // node dependencies - console = require('better-console'), - - // gulp dependencies - chmod = require('gulp-chmod'), - concat = require('gulp-concat'), - dedupe = require('gulp-dedupe'), - flatten = require('gulp-flatten'), - gulpif = require('gulp-if'), - header = require('gulp-header'), - normalize = require('normalize-path'), - plumber = require('gulp-plumber'), - print = require('gulp-print').default, - rename = require('gulp-rename'), - replace = require('gulp-replace'), - uglify = require('gulp-uglify'), - - // 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 -; - -/** - * Concat and uglify the Javascript files - * @param {string|array} src - source files - * @param type - * @param config - * @return {*} - */ -function build(src, type, config) { - return gulp.src(src) - .pipe(plumber()) - .pipe(flatten()) - .pipe(replace(comments.license.in, comments.license.out)) - .pipe(gulpif(config.hasPermissions, chmod(config.parsedPermissions))) - .pipe(gulp.dest(config.paths.output.uncompressed)) - .pipe(print(log.created)) - .pipe(uglify(settings.uglify)) - .pipe(rename(settings.rename.minJS)) - .pipe(header(banner, settings.header)) - .pipe(gulpif(config.hasPermissions, chmod(config.parsedPermissions))) - .pipe(gulp.dest(config.paths.output.compressed)) - .pipe(print(log.created)) - ; -} - -/** - * Packages the Javascript files in dist - * @param {string} type - type of the js 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 concatenatedJS = compress ? filenames.concatenatedMinifiedJS : filenames.concatenatedJS; - - return gulp.src(output.uncompressed + '/**/' + globs.components + globs.ignored + '.js') - .pipe(plumber()) - .pipe(dedupe()) - .pipe(replace(assets.uncompressed, assets.packaged)) - .pipe(concat(concatenatedJS)) - .pipe(gulpif(compress, uglify(settings.concatUglify))) - .pipe(header(banner, settings.header)) - .pipe(gulpif(config.hasPermissions, chmod(config.parsedPermissions))) - .pipe(gulp.dest(output.packaged)) - .pipe(print(log.created)) - ; -} - -function buildJS(src, type, config, callback) { - if (!install.isSetup()) { - console.error('Cannot build Javascript. Run "gulp install" to set-up Semantic'); - callback(); - return; - } - - if (callback === undefined) { - callback = config; - config = type; - type = src; - src = config.paths.source.definitions + '/**/' + config.globs.components + (config.globs.ignored || '') + '.js'; - } - - if (globs.individuals !== undefined && typeof src === 'string') { - const individuals = config.globs.individuals.replace('{',''); - const components = config.globs.components.replace('}',',').concat(individuals); - - src = config.paths.source.definitions + '/**/' + components + (config.globs.ignored || '') + '.js'; - } - - // copy source javascript - const js = () => build(src, type, config); - js.displayName = "Building un/compressed Javascript"; - - const packUncompressed = () => pack(type, false); - packUncompressed.displayName = 'Packing uncompressed Javascript'; - - const packCompressed = () => pack(type, true); - packCompressed.displayName = 'Packing compressed Javascript'; - - gulp.series(js, gulp.parallel(packUncompressed, packCompressed))(callback); -} - -module.exports = function (callback) { - buildJS(false, config, callback); -}; - -// We keep the changed files in an array to call build with all of them at the same time -let timeout, files = []; - -module.exports.watch = function (type, config) { - gulp - .watch([normalize(config.paths.source.definitions + '/**/*.js')]) - .on('all', function (event, path) { - // We don't handle deleted files yet - if (event === 'unlink' || event === 'unlinkDir') { - return; - } - - // Clear timeout - timeout && clearTimeout(timeout); - - // Add file to internal changed files array - if (!files.includes(path)) { - files.push(path); - } - - // Update timeout - timeout = setTimeout(() => { - console.log('Change in javascript detected'); - // Copy files to build in another array - const buildFiles = [...files]; - // Call method - gulp.series((callback) => buildJS(buildFiles, type, config, callback))(); - // Reset internal changed files array - files = []; - }, 1000); - }); -}; - -module.exports.buildJS = buildJS;
\ No newline at end of file |