consumerportal
Version:
mydna Custimised for you
144 lines (126 loc) • 4.78 kB
JavaScript
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']);