UNPKG

nt-arcane

Version:

App creator for arcane framework.

135 lines (116 loc) 4.13 kB
var gulp = require('gulp'), arcane_gulp = require('gulp-arcane'), async = require('async'), fork = require( 'child_process' ).fork, gutil = require( 'gulp-util' ), concat = require('gulp-concat'), uglify = require('gulp-uglify'), lib = require('bower-files')(), cleanCSS = require('gulp-clean-css'), less = require('gulp-less'), inject = require('gulp-inject'), flatten = require('gulp-flatten'), typescript = require('gulp-tsc'); /************************************************************ * Add your NPM frontend javascript file here. */ var node_js_files = [ 'node_modules/systemjs/dist/system-polyfills.js', 'node_modules/angular2/bundles/angular2-polyfills.js', 'node_modules/systemjs/dist/system.src.js', 'node_modules/rxjs/bundles/Rx.js', 'node_modules/angular2/bundles/angular2.dev.js' ]; /*###########################################################*/ /*********************************************************** * Gulp process below. ############################################################*/ gulp.task('controller-model-ts', function() { return gulp.src('controller/**/models/*.ts') .pipe(arcane_gulp.DefineGeneratorModel(__dirname)) }); gulp.task('global-model-ts', function() { return gulp.src('models/*.ts') .pipe(arcane_gulp.DefineGeneratorModel(__dirname)) }); gulp.task('watch', ['default'], function() { gulp.watch(['controller/**/models/*.ts'], ['controller-model-ts']); gulp.watch(['models/*.ts'], ['global-model-ts']); gulp.watch(['assets/**/*.js', 'assets/**/*.css', 'views/*.html', 'views/**/*.html'], ['inject']); gulp.watch(['bower_components/**/*.js', 'bower_components/**/*.css'], ['bower-compile']); }); var app = { instance: {}, path: 'app.js', start: function( callback ) { process.execArgv.push( '--harmony-proxies' ); app.instance = fork( app.path, { silent: true, env: app.env } ); app.instance.stdout.pipe( process.stdout ); app.instance.stderr.pipe( process.stderr ); if( callback ) callback(); } }; gulp.task( 'server', function( callback ) { async.series([ app.start, ], callback ); }); gulp.task( 'bower-js', function() { var files = lib.match('**/*.js').match('!**/*.min.js').files; node_js_files.filter(function(val) { files.push(__dirname + '/' + val); }); return gulp.src(files) .pipe(concat('scripts.min.js')) .pipe(uglify()) .pipe(gulp.dest('assets/js')); }); gulp.task( 'bower-css', function() { return gulp.src(lib.match('**/*.css').match('!**/*.min.css').files) .pipe(concat('style.min.css')) .pipe(cleanCSS({compatibility: 'ie8'})) .pipe(gulp.dest('assets/css')); }); gulp.task( 'bower-less', function() { return gulp.src(lib.match('**/*.less').match('!**/*.min.less').files) .pipe(concat('style.min.css')) .pipe(less()) .pipe(cleanCSS({compatibility: 'ie8'})) .pipe(gulp.dest('assets/css')); }); gulp.task('bower-fonts', function() { return gulp.src('bower_components/**/fonts/*.{eot,svg,ttf,woff}') .pipe(flatten()) .pipe(gulp.dest('assets/fonts')); }); gulp.task('inject', function () { var target = gulp.src(['views/*.html', 'views/**/*.html']); var sources = gulp.src(['assets/js/**/*.js', 'assets/css/**/*.css'], {read: false}); return target.pipe(inject(sources, { relative: false, transform: function (filepath) { arguments[0] = filepath.replace(/\/assets\//g, ''); return inject.transform.apply(inject.transform, arguments); } })) .pipe(gulp.dest('views')); }); gulp.task('typescript-compile', function() { gulp.src(['components/**/*.ts', 'components/*.ts']) .pipe(typescript({ module: 'system', target: 'ES5', sourceMap: true, emitDecoratorMetadata: true, experimentalDecorators: true, moduleResolution: 'node', removeComments: false, noImplicitAny: true, suppressImplicitAnyIndexErrors: true, noLib: false, emitError: false })) .pipe(gulp.dest('assets/app')) }); gulp.task('bower-compile', ['bower-js', 'bower-css', 'bower-less', 'bower-fonts']); gulp.task('default', ['server', 'inject', 'bower-compile', 'global-model-ts', 'controller-model-ts', 'typescript-compile']);