File "gulpfile.js"

Full Path: /srv/www/www.cadoro.it/app/gulpfile.js
File size: 4.62 KB
MIME-type: text/plain
Charset: utf-8

var gulp = require('gulp');
var addsrc = require('gulp-add-src');
var gutil = require('gulp-util');
var bower = require('bower');
var clean = require('gulp-clean');
var concat = require('gulp-concat');
var jshint = require('gulp-jshint');
var sass = require('gulp-sass');
var minifyCss = require('gulp-minify-css');
var rename = require('gulp-rename');
var templateCache = require('gulp-angular-templatecache');
var ngAnnotate = require('gulp-ng-annotate');
var uglify = require("gulp-uglify");
var sh = require('shelljs');

var paths = {
    sass: [
      './src/scss/**/*.scss'
    ],
    scripts: [
      './src/js/**/*.js'
    ],
    scripts_libs: [
      // './lib/angular/angular.js',
      // './lib/angular-animate/angular-animate.min.js',
      // './lib/angular-sanitize/angular-sanitize.min.js',
      // './lib/angular-ui-router/release/angular-ui-router.min.js',
      // './lib/ionic/js/ionic.min.js',
      // './lib/ionic/js/ionic-angular.min.js',
      './lib/ionic/js/ionic.bundle.min.js',
      './lib/angular-local-storage/dist/angular-local-storage.min.js',
      './lib/angular-md5/angular-md5.min.js',
      './lib/ngCordova/dist/ng-cordova.min.js',
      './lib/ng-cordova-oauth/dist/ng-cordova-oauth.min.js',
      './lib/jquery/dist/jquery.min.js',
      './lib/barcode-jquery/jquery-barcode.min.js',
      './lib/jquery-qrcode/jquery.qrcode.min.js',
      './lib/moment/min/moment.min.js',
      './lib/underscore/underscore-min.js',
      './lib/jsSHA/src/sha1.js',
      './lib/ion-gallery/dist/ion-gallery.min.js',
    ],
    scripts_libs_uglify: [
      './lib/json2/json2.js',
      './lib/humanize-duration/humanize-duration.js',
      './lib/imgcache.js/js/imgcache.js',
      './lib/angular-imgcache/angular-imgcache.js'
      // './lib/angular-ios9-uiwebview.patch.js'
    ],
    scripts_templates: [
      './src/templates/**/*.html'
    ],
    src: './src',
    dist: './www',
    dist_css: 'app.css',
    dist_scripts: 'app.js',
    dist_scripts_bundle: 'app.bundle.js',
    dist_scripts_templates: 'templates.js',
    dist_www: '../www'
};

gulp.task('default', ['dist']);

gulp.task('build', ['sass', 'templates', 'scripts']);

gulp.task('sass', function(done) {
    gulp.src(paths.src + '/scss/app.scss')
        .pipe(sass())
        .pipe(minifyCss({
            keepSpecialComments: 0
        }))
        .pipe(gulp.dest(paths.dist + '/css'))
        .on('end', done);
});

gulp.task('templates', function (done) {
    gulp.src(paths.scripts_templates)
        .pipe(templateCache('templates.js', {module: 'app.templates', standalone: true, root: 'templates/'}))
        .pipe(gulp.dest(paths.src))
        .on('end', done);
});

gulp.task('scripts', ['templates'], function(done) {
    gulp.src(paths.scripts.concat([paths.src + '/' + paths.dist_scripts_templates]))
        .pipe(jshint({laxcomma: true}))
        .pipe(jshint.reporter('default'))
        .pipe(ngAnnotate({
            remove: true,
            add: true,
            single_quotes: true
        }))
        .pipe(uglify())
        .pipe(concat(paths.dist_scripts))
        .pipe(rename({
            extname: '.js'
        }))
        .pipe(gulp.dest(paths.dist + '/js'))
        .on('end', done);
});

gulp.task('scripts-bundle', [], function(done) {
    gulp.src(paths.scripts_libs_uglify)
        .pipe(uglify())
        .pipe(addsrc.prepend(paths.scripts_libs))
        .pipe(concat(paths.dist_scripts_bundle))
        .pipe(gulp.dest(paths.dist + '/js'))
        .on('end', done);
});

gulp.task('dist', ['build'], function() {
    gulp.src(paths.dist + '/css/' + paths.dist_css)
        .pipe(gulp.dest(paths.dist_www + '/css'));
    gulp.src(paths.dist + '/js/' + paths.dist_scripts)
        .pipe(gulp.dest(paths.dist_www + '/js'));
    gulp.src(paths.dist + '/js/' + paths.dist_scripts_bundle)
        .pipe(gulp.dest(paths.dist_www + '/js'));
    return true;
});

gulp.task('watch', ['dist'], function() {
    gulp.watch(paths.sass.concat(paths.scripts_templates.concat(paths.scripts)), ['dist']);
});

gulp.task('install', ['git-check'], function() {
    return bower.commands.install()
        .on('log', function(data) {
            gutil.log('bower', gutil.colors.cyan(data.id), data.message);
        });
});

gulp.task('git-check', function(done) {
    if (!sh.which('git')) {
        console.log(
            '  ' + gutil.colors.red('Git is not installed.'),
            '\n  Git, the version control system, is required to download Ionic.',
            '\n  Download git here:', gutil.colors.cyan('http://git-scm.com/downloads') + '.',
            '\n  Once git is installed, run \'' + gutil.colors.cyan('gulp install') + '\' again.'
        );
        process.exit(1);
    }
    done();
});