UNPKG

consumerportal

Version:

mydna Custimised for you

144 lines (126 loc) 4.78 kB
var argv = require('yargs').argv; var doif = require('gulp-if'); var gulp = require('gulp'); var concat = require('gulp-concat'); var cssmin = require('gulp-cssmin'); var htmlmin = require('gulp-htmlmin'); var ngTemplate = require('gulp-ng-templates'); var rename = require('gulp-rename'); var replace = require('gulp-replace'); var uglify = require('gulp-uglify'); var sass = require('gulp-sass'); var sourcemaps = require('gulp-sourcemaps'); var ts = require('gulp-typescript'); var webserver = require('gulp-webserver'); const CONFIG = argv.config || 'dev'; const NPM = 'node_modules/'; const LIBS = 'lib/'; const CONFIGJS = 'js/config/config-' + CONFIG + '.js'; const OUTPUT = 'dist/'; const NOUGLIFY = argv.nouglify === "true"; const SOURCEMAPS = argv.sourcemaps === true; const NOWATCH = argv.nowatch === true; const NOSERVER = argv.noserver === true; const NOLIBS = argv.nolibs === true; function random() { var arr = 'abcdfeghijklmnopqrstuvwxyz1234567890'.split(''); var str = ''; for (var index = 0; index < 20; index++) { str += arr[Math.floor(Math.random()* arr.length)]; } return str; } const UUID = random(); gulp.task('scss', function() { gulp.src('css/main.scss') .pipe(sass().on('error', sass.logError)) .pipe(replace('--UUID--', UUID)) .pipe(cssmin()) .pipe(rename('style.css')) .pipe(gulp.dest(OUTPUT)); }); gulp.task('libs', function() { if (!NOLIBS) { return gulp.src([ NPM + 'angular/angular.js', NPM + 'angular-route/angular-route.js', NPM + 'angular-messages/angular-messages.min.js', NPM + 'angular-touch/angular-touch.min.js', NPM + 'angular-hotkeys/build/hotkeys.min.js', NPM + 'bootstrap/dist/js/bootstrap.min.js', NPM + 'angular-ui-bootstrap/dist/ui-bootstrap.js', NPM + 'angular-ui-bootstrap/dist/ui-bootstrap-tpls.js', LIBS + 'browser.js', NPM + 'angular-ui-mask/dist/mask.min.js', NPM + 'moment/moment.js', LIBS + 'FileSaver/FileSaver.js', LIBS + 'smoothscroll/angular-smooth-scroll.min.js', LIBS + 'xml2json/xml2json.min.js', LIBS + 'angular-date-dropdowns.js', CONFIGJS ]) .pipe(concat('libs.js')) .pipe(uglify({compress: { drop_console: true }})) .pipe(gulp.dest(OUTPUT)) } }); gulp.task('typescript', function () { return gulp.src(['js/src/**/*.ts']) .pipe(doif(SOURCEMAPS, sourcemaps.init())) .pipe(ts({ noImplicitAny: false, out: 'app.js' })) .pipe(replace('<!--MYDNA-UUID-->', UUID)) .pipe(doif(!NOUGLIFY, uglify({compress: { drop_console: true }}))) .pipe(doif(SOURCEMAPS, sourcemaps.write())) .pipe(gulp.dest(OUTPUT)); }); gulp.task('files', ['typescript', 'scss', 'templates', 'libs'], function() { gulp.src('assets/images/**/*') .pipe(gulp.dest(OUTPUT + 'images')); gulp.src('assets/fonts/**/*') .pipe(gulp.dest(OUTPUT + 'fonts')); gulp.src('assets/data/**/*') .pipe(gulp.dest(OUTPUT + 'data')); gulp.src('index.html') .pipe(replace('<!--MYDNA-SCRIPT-INJECTION-->', '<script src="libs.js?' + UUID + '"></script><script src="templates.js?' + UUID + '"></script><script src="app.js?' + UUID + '"></script>')) .pipe(replace('<!--MYDNA-STYLE-INJECTION-->', '<link rel="stylesheet" media="all" href="style.css?' + UUID + '">')) .pipe(gulp.dest(OUTPUT)); }); gulp.task('templates', function() { return gulp.src('views/**/*.html') .pipe(htmlmin({collapseWhitespace: true})) .pipe(ngTemplate({ filename: 'templates.js', module: 'templates', path: function (path, base) { return path.replace(base, 'views/').replace('/src/views', ''); } })) .pipe(gulp.dest(OUTPUT)); }); gulp.task('watch', ['files'], function() { if (!NOWATCH) { gulp.watch('js/**/*.ts', ['typescript']); gulp.watch('views/**/*.html', ['templates']); gulp.watch('css/**/*.scss', ['scss']); gulp.watch(['index.html', 'images/*.*'], ['files']); } }); gulp.task('server', ['watch'], function() { if (!NOSERVER) { gulp.src('dist') .pipe(webserver({ livereload: true, directoryListing: false, open: true, port: 3000 })); } }); gulp.task('default', ['server']);