UNPKG

pancakes-syrup

Version:

Deployment build tasks for pancakes projects

197 lines (169 loc) 6.48 kB
/** * Author: Jeff Whelpley * Date: 1/22/15 * * Streams for handling JavaScript */ var concat = require('gulp-concat'); var file = require('gulp-file'); var eventStream = require('event-stream'); var streamqueue = require('streamqueue'); var objMode = { objectMode: true }; function generateLibJs(gulp, opts) { var libs = opts.isMobile ? [].concat(opts.jsMobileLibs) : [].concat(opts.jsLibs); return gulp.src(libs) .pipe(concat(opts.outputPrefix + '.libs.js')); } function generateLazyJs(gulp, opts) { return gulp.src(opts.jsLazy) .pipe(concat(opts.outputPrefix + '.lazy.js')); } function generateAppCore(appName, gulp, opts) { var pancakes = opts.pancakes; return streamqueue(objMode, gulp.src(['app/' + appName + '/' + appName + '.app.js']) .pipe(pancakes({ transformer: 'app', isMobile: opts.isMobile })), gulp.src(['app/' + appName + '/ng.config/*.js']) .pipe(pancakes({ ngType: 'config', transformer: 'basic', isClient: true })), gulp.src(['app/' + appName + '/' + appName + '.app.js']) .pipe(pancakes({ transformer: 'routing', config: opts.config })) ) .pipe(concat(opts.outputPrefix + '.' + appName + '.app.js')); } function generateAppUI(appName, gulp, opts) { var pancakes = opts.pancakes; return eventStream.merge( gulp.src([ 'app/' + appName + '/partials/*.partial.js', 'app/' + appName + '/pages/*.page.js' ]), file('blank.js', ' ', { src: true }) ) .pipe(pancakes({ transformer: 'uipart' })) .pipe(concat(opts.outputPrefix + '.' + appName + '.ui.js')); } function generateAppUtils(appName, gulp, opts) { var pancakes = opts.pancakes; return eventStream.merge( gulp.src(['app/' + appName + '/utils/*.js']), file('blank.js', ' ', { src: true }) ) .pipe(pancakes({ ngType: 'factory', transformer: 'basic' })) .pipe(concat(opts.outputPrefix + '.' + appName + '.utils.js')); } function generateAppOther(appName, gulp, opts) { var pancakes = opts.pancakes; return eventStream.merge( gulp.src(['app/' + appName + '/filters/*.js']) .pipe(pancakes({ ngType: 'filter', transformer: 'basic', isClient: true })), gulp.src(['app/' + appName + '/ng.directives/*.js']) .pipe(pancakes({ ngType: 'directive', transformer: 'basic', isClient: true })), gulp.src(['app/' + appName + '/jng.directives/*.js']) .pipe(pancakes({ ngType: 'directive', transformer: 'basic', isClient: true })), file('blank.js', ' ', { src: true }) ) .pipe(concat(opts.outputPrefix + '.' + appName + '.other.js')); } function generateAppJs(appName, gulp, opts) { var pancakes = opts.pancakes; if (!pancakes) { throw new Error('batter.whip() must include pancakes in opts'); } return streamqueue(objMode, generateAppCore(appName, gulp, opts), eventStream.merge( generateAppUI(appName, gulp, opts), generateAppUtils(appName, gulp, opts), generateAppOther(appName, gulp, opts) ) ) .pipe(concat(opts.outputPrefix + '.' + appName + '.js')); } function generatePancakesApp(gulp, opts) { var clientPlugin = (opts.pancakesConfig && opts.pancakesConfig.clientPlugin) || {}; var clientPluginLib = (opts.deploy ? clientPlugin.clientLibMinPath : clientPlugin.clientLibPath) || ''; return gulp.src(clientPluginLib) .pipe(concat(opts.outputPrefix + '.pancakes.app.js')); } function generatePluginUtils(gulp, opts) { var pancakes = opts.pancakes; return gulp.src(pancakes.getPluginModules('utils')) .pipe(pancakes({ ngType: 'factory', transformer: 'basic', isFromPlugin: true })) .pipe(concat(opts.outputPrefix + '.plugin.utils.js')); } function generateUtils(gulp, opts) { var pancakes = opts.pancakes; return gulp.src(['utils/*.js']) .pipe(pancakes({ ngType: 'factory', transformer: 'basic' })) .pipe(concat(opts.outputPrefix + '.utils.js')); } function generateApi(gulp, opts) { var pancakes = opts.pancakes; return gulp.src(['services/resources/**/*.resource.js']) .pipe(pancakes({ transformer: 'apiclient' })) .pipe(concat(opts.outputPrefix + '.api.js')); } /** * Generate one combined Javascript file for a given app * @param gulp * @param opts */ function generateCommonJs(gulp, opts) { var pancakes = opts.pancakes; if (!pancakes) { throw new Error('batter.whip() must include pancakes in opts'); } return streamqueue(objMode, generatePancakesApp(gulp, opts), generateAppJs('common', gulp, opts), generatePluginUtils(gulp, opts), eventStream.merge( generateUtils(gulp, opts), generateApi(gulp, opts) ) ) .pipe(concat(opts.outputPrefix + '.common.js')); } /** * Generate one combined Javascript file for a given app (ex: gh.common.js and gh.contact.js become gh.contact.combo.js) * @param appName * @param gulp * @param opts */ function generateComboJs(appName, gulp, opts) { var pancakes = opts.pancakes; if (!pancakes) { throw new Error('batter.whip() must include pancakes in opts'); } return streamqueue(objMode, generateLibJs(gulp, opts), generateCommonJs(gulp, opts), generateAppJs(appName, gulp, opts) //ZA: was causing angular not found issue //generateAppJs('common', gulp, opts), //generatePancakesApp(gulp, opts), //generatePluginUtils(gulp, opts), //eventStream.merge( // generateUtils(gulp, opts), // generateApi(gulp, opts) //) ) .pipe(concat(opts.outputPrefix + '.' + appName + '.combo.js')); } module.exports = { generateComboJs: generateComboJs, generateLibJs: generateLibJs, generateLazyJs: generateLazyJs, generateAppCore: generateAppCore, generateAppUI: generateAppUI, generateAppUtils: generateAppUtils, generateAppOther: generateAppOther, generateAppJs: generateAppJs, generatePancakesApp: generatePancakesApp, generatePluginUtils: generatePluginUtils, generateUtils: generateUtils, generateApi: generateApi, generateCommonJs: generateCommonJs };