/** * Utility Functions: */ function buildIndex() { var target = gulp.src('./src/index.html'); // It's not necessary to read the files (will speed up things), we're only after their paths: var sources = merge(bowerFiles, srcFiles); var src = merge(sources, srcTestFiles); target.pipe(inject(src, {relative: true})) .pipe(gulp.dest(config.build)); }
// Build the demos function buildDemo(directory, targetJsName) { // Typescript files get compiled var demoTs = gulpMerge(gulp.src([ directory + '/**/*.ts' ]), definitionFiles); // Non typescript files get passed through var demoNoTs = gulp.src([ directory + '/**/*', '!' + directory + '/**/*.ts' ]); // Compile the typescript files var compiledDemo = demoTs.pipe(ts({ out: targetJsName, declarationFiles: false, noExternalResolve: true })); // Result is the non-ts files, the compiled result and the engine return gulpMerge(demoNoTs, compiledDemo.js, engine); }
gulp.task('build.demos', [ 'build.engine' ], function() { var engine = gulp.src('build/dist/**/*.js'); var definitionFiles = gulpMerge(gulp.src([ 'ThirdParty/**/*.d.ts', 'TameGame/**/*.d.ts', 'build/dist/**/*.d.ts' ])); // Build the demos function buildDemo(directory, targetJsName) { // Typescript files get compiled var demoTs = gulpMerge(gulp.src([ directory + '/**/*.ts' ]), definitionFiles); // Non typescript files get passed through var demoNoTs = gulp.src([ directory + '/**/*', '!' + directory + '/**/*.ts' ]); // Compile the typescript files var compiledDemo = demoTs.pipe(ts({ out: targetJsName, declarationFiles: false, noExternalResolve: true })); // Result is the non-ts files, the compiled result and the engine return gulpMerge(demoNoTs, compiledDemo.js, engine); } var demoBounce = buildDemo('Demos/Bounce', 'Bounce.js'); return merge([ demoBounce.pipe(gulp.dest('build/Demos/Bounce')) ]); });
function compileCss() { return merge( merge( gulp.src('node_modules/reveal.js/css/reveal.css'), gulp.src(['src/css/site.scss', 'src/css/reveal-theme.scss']) .pipe(sass()), gulp.src(['src/css/vs.css', 'src/css/normalize.css', 'src/css/site.css', 'src/css/skeleton.css']) ) .pipe(concat('bundle.css')) .pipe(gulp.dest('dist/css')), gulp.src('src/css/skeleton.css') .pipe(gulp.dest('dist/css')), gulp.src('src/css/bootstrap.scss') .pipe(sass()) .pipe(gulp.dest('dist/css'))); }
glob('./assets/js/custom/*.js', function(er, file) { customs = file; var customsOfNumber = customs.length; for(var i = 0; i < customsOfNumber; i++) { jsFileName = customs[i].substring(customs[i].lastIndexOf('/') + 1, customs[i].length - 3); gulpMerge( gulp.src('./assets/vendor/require/require.js') .pipe(concat('require.js')), gulp.src('./assets/js/custom/*.js', {base: 'assets'}) .pipe(plumber({ errorHandler: function (error) { console.log(error.message); this.emit('end'); }})) .pipe(amdOptimize('./assets/js/custom/' + jsFileName, { configFile: './assets/js/custom/base.js' })) .pipe(concat(jsFileName + ".js")) ) .pipe(concat(jsFileName + ".js")) .pipe(gulp.dest('./assets/js')) .pipe(rename(jsFileName + '.min.js')) .pipe(uglify()) .pipe(gulp.dest('./assets/js')); } });
gulp.task('to5', function () { try { return merge( gulp .src([ './node_modules/observe-shim/lib/observe-shim.js', './node_modules/observe-utils/lib/observe-utils.js' ]) .pipe(concat('shim.js')), gulp .src([ './node_modules/sanitizer/sanitizer.js' ]) .pipe(wrapper({ header: '(function(){var define,exports;', footer: '})(window);' })) .pipe(concat('deps.js')), gulp .src('./mvc.js') .pipe(to5({ modules: 'amd' }).on('error', function(e) { console.log('error running 6to5', e); }) ) ) .pipe(concat('mvc.js')) .pipe(gulp.dest('./dist/')); } catch(e) { console.log('Got error in 6to5', e); } });
gulp.task('build.tests', [ 'build.engine' ], function() { var engine = gulp.src('build/dist/**/*.js'); // Build the tests var tests = gulpMerge(gulp.src('Test/**/*'), engine); return tests.pipe(gulp.dest('build/Test')); });
gulp.task('card-vendors', folders('src/cards', function (folder) { return merge( gulp.src(bowerFiles({ paths: path.join('src/cards', folder) })), gulp.src(path.join('src/cards', folder, 'vendor/*')) ).pipe(gulp.dest(path.join('dist/cards', folder, 'vendor'))); }));
gulp.task('cssFile', function () { return merge(cssLib(),cssSass()) .pipe(concat('app.min.css')) .pipe(minifycss()) .pipe(gulp.dest(pathDes.css)) .pipe(livereload()) .pipe(notify({message: 'coreCss completed!'})); });
gulp.task('libFile', function(){ return merge(appLib(),appJsx()) .pipe(jshint()) // .pipe(jshint.reporter('default')) .pipe(concat('app.min.js')) .pipe(uglify()) .pipe(gulp.dest(pathDes.js)) .pipe(livereload()) .pipe(notify({message: 'libFile completed!'})); });
gulp.task('scripts', function(){ return merge( gulp.src(config.paths.javascript.src), gulp.src(mainBowerFiles()) ) .pipe(sourcemaps.init()) .pipe(concat("script.min.js")) .pipe(uglify()) .pipe(sourcemaps.write()) .pipe(gulp.dest(config.paths.javascript.dest)); });
gulp.task('style', function() { return gulpMerge( gulp.src(paths.css), gulp.src(paths.less) .pipe(debug({title: 'less'})) .pipe(less()) ) .pipe(debug({title: 'css'})) .pipe(concat('style.css')) .pipe(minifycss()) .pipe(gulp.dest('www/')); });
dist.css = function () { var bowerFiles = gulp.src(index_deps.css); var srcFiles = gulp.src(['src/assets/css/*.css']); merge(bowerFiles, srcFiles) .pipe(concat('lib.css')) .pipe(gulp.dest('src/lib')) .pipe(gulp.dest('dist/lib')) .pipe(minifyCSS()) .pipe(rename('lib.min.css')) .pipe(gulp.dest('src/lib')) .pipe(gulp.dest('dist/lib')) .on('error', gutil.log); }
gulp.task('build.engine', function () { // Build TameGame.js var engineTs = gulp.src([ 'TameGame/**/*.ts', 'ThirdParty/**/*.d.ts' ]); var compiledEngine = engineTs.pipe(ts(engineTsProject)); var definitionFiles = gulpMerge(gulp.src([ 'ThirdParty/**/*.d.ts', 'TameGame/**/*.d.ts' ]), compiledEngine.dts); // Build the launcher (TameLaunch.js) var launchTs = gulpMerge(gulp.src([ 'TameLaunch/**/*.ts' ]), definitionFiles); var compiledLaunch = launchTs.pipe(ts(launchTsProject)); // Merge in the required dependencies var p2js = gulp.src('ThirdParty/p2.js/build/**/*'); return merge([ compiledEngine.js.pipe(gulp.dest('build/dist')), compiledEngine.dts.pipe(gulp.dest('build/dist')), compiledLaunch.js.pipe(gulp.dest('build/dist')), compiledLaunch.dts.pipe(gulp.dest('build/dist')), p2js.pipe(gulp.dest('build/dist')) ]); });
gulp.task("files", function() { var outputPath = 'dist'; var cssSource = 'vendor/bootstrap/dist/css/bootstrap.min.css'; var css = gulp.src(cssSource).pipe(gulp.dest(outputPath + '/css')); var js = gulp.src('app/main.js') .pipe(requirejsOptimize({ optimize: 'none', mainConfigFile: 'app/config.js' })) .pipe(gulp.dest(outputPath + '/js')); return merge(css, js); });
dist.index = function () { var target = gulp.src('./src/index.html'); // var bowerFiles = gulp.src(index_deps.js, {base: 'src', read: false}); // It's not necessary to read the files (will speed up things), we're only after their paths: var sources = gulp.src([ 'src/lib/lib.css', 'src/lib/lib.js' ], {read: false}); var srcFiles = merge(sources) return target.pipe(inject(srcFiles, {relative: true, ignorePath: 'dist', addRootSlash: false})) .pipe(gulp.dest('dist')); }
gulp.task('copyThemeAssets', [], function () { var basePath = path.join('bower_components', 'theme'); var universalAssets = gulp.src([ path.join(basePath, 'universal', fontGlob), path.join(basePath, 'universal', imageGlob) ], {follow: true}); var retailAssets = gulp.src([ path.join(basePath, 'retail', fontGlob), path.join(basePath, 'retail', imageGlob) ], {follow: true}); return merge(universalAssets, retailAssets) .pipe(debug({title: 'copying'})) .pipe(gulp.dest(opts.dist)); });
gulp.task('chrome', function() { var chromeJs = gulp.src(paths.source.chrome.js) .pipe(gulpif(config.sourcemaps, sourcemaps.init())) .pipe(concat('chrome.js')) .pipe(gulpif(config.production, uglify())) .pipe(gulpif(config.sourcemaps, sourcemaps.write())) .pipe(gulp.dest(paths.destination.chrome)); var manifestSrc = config.production ? paths.source.chrome.manifest : paths.source.chrome.manifestDev; var chromeManifest = gulp.src(manifestSrc) .pipe(rename('manifest.json')) .pipe(gulp.dest(paths.destination.chrome)); return merge(chromeJs, chromeManifest); });
gulp.task('angularify', ['transpile'], function() { var directive = gulp.src('./src/*.es5.js'); var generated = gulp.src(['./src/router.ats', './src/grammar.ats']) .pipe(modulate({ moduleName: 'ngNewRouter.generated' })) return gulpMerge(directive, generated) .pipe(concat('router.es5.js')) .pipe(ngAnnotate()) .pipe(gulp.dest(BUILD_DIR)) .pipe(uglify()) .pipe(rename({extname: '.min.js'})) .pipe(gulp.dest(BUILD_DIR)); });
gulp.task('make:css', function () { var source = gulp.src('./sass/*.scss') .pipe(plumber()) .pipe(sourcemaps.init({ loadMaps: true })) .pipe(sass()); var pipe1 = source.pipe(clone()) .pipe(sourcemaps.write(undefined, { sourceRoot: null })) .pipe(gulp.dest(paths.cssDest)); var pipe2 = source.pipe(clone()) .pipe(cssnano()) .pipe(rename({ suffix: '.min' })) .pipe(gulp.dest(paths.cssDest)); return merge(pipe1, pipe2); });
gulp.task('scripts', () => { const manifest = gulp.src('dist/static/rev-manifest.json'); return gulpMerge( gulp.src(config.vendorScripts), gulp.src(config.projectScripts)) .pipe(uglify()) .pipe(concat('bundle.js')) .pipe(revReplace({manifest: manifest})) .pipe(rev()) .pipe(gulp.dest('dist/static/scripts/')) .pipe(rev.manifest('dist/static/rev-manifest.json', { base:'dist/static/', merge: true })) .pipe(gulp.dest('dist/static/')); });
gulp.task('html-wrap',['join-css-files','join-script-files'], function(){ return merge( gulp.src([paths.output+'output.css']) .pipe(wrapper({ header: '<style type="text/css">\n', footer: '\n</style>\n' })), gulp.src([paths.output+'output.js']) .pipe(wrapper({ header: '<script type="text/javascript">\n', footer: '\n</script>' })) ) .pipe(concat('output.html')) .pipe(wrapper({ header:'<html>\n', footer:'\n</html>' })) .pipe(gulp.dest(paths.output)); });
gulp.task('bem', () => { return merge( // bemhtml bundle.src({ tech: 'bemhtml.js', extensions: ['.bemhtml.js', '.bemhtml'] }) .pipe(concat(bundle.name())) .pipe(bemhtml({ extension: '.bemhtml.js' })), // bemtree bundle.src({ tech: 'bemtree.js', extensions: ['.bemtree.js'] }) .pipe(concat(bundle.name())) .pipe(bemtree({ extension: '.bemtree.js' })) ) .pipe(gulp.dest('build/bundles/index')); });
gulp.task('to5', function () { try { return merge( gulp .src([ './node_modules/observe-shim/lib/observe-shim.js', './node_modules/observe-utils/lib/observe-utils.js' ]) .pipe(concat('shim.js')), gulp .src('./mvc.js') .pipe(to5({ modules: 'amd' }).on('error', function(e) { console.log('error running 6to5', e); }) ) ) .pipe(concat('mvc.js')) .pipe(gulp.dest('./dist/')); } catch(e) { console.log('Got error in 6to5', e); } });
gulp.task('doc.markdown', ['doc.sections'], function() { var md = gulp.src(['doc/content/**/*.md']); var noFrontMatter = md.pipe(frontmatter({ property: 'frontmatter', remove: true })); var compiled = noFrontMatter.pipe(markdown({ highlight: function (code, lang, callback) { var langList = null; if (lang) { langList = [ lang ]; } var highlighted = highlight.highlightAuto(code, langList); callback(null, highlighted.value); } })); // Attach the allSections object to the files var withSections = compiled.pipe(through.obj(function (file, enc, cb) { file.sections = { allSections: allSections, firstPage: {} } this.push(file); cb(); })); // Attach an object with the ordered page data in it var withPages = withSections.pipe(through.obj(function (file, enc, cb) { var allSections = file.sections.allSections; var sectionPages = allSections[file.frontmatter.section]; file.sections.pages = Object.keys(sectionPages); file.sections.pages.sort(function (a, b) { return sectionPages[a].order - sectionPages[b].order; }); file.sections.firstPage[file.frontmatter.section] = sectionPages[file.sections.pages[0]].name; this.push(file); cb(); }, function(cb) { cb(); })); var wrapped = withPages.pipe(applyTemplate({ engine: 'lodash', template: 'doc/templates/doc.lodash.html', props: [ 'contents', 'data' ], context: function(file) { return { data: { frontmatter: file.frontmatter, sections: file.sections }, }; } })); var css = gulp.src(['doc/templates/*.css']); css = gulpMerge(css, gulp.src('node_modules/highlight.js/styles/default.css')); var images = gulp.src(['doc/images/**/*']); return merge([ wrapped.pipe(gulp.dest('build/doc')), css.pipe(gulp.dest('build/doc')), images.pipe(gulp.dest('build/doc')) ]); });