Skip to content

Instantly share code, notes, and snippets.

@Psvensso
Created March 2, 2014 23:16

Revisions

  1. Per Svensson created this gist Mar 2, 2014.
    103 changes: 103 additions & 0 deletions Gulpfile.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,103 @@
    var gulp = require('gulp'),
    sass = require('gulp-ruby-sass'),
    autoprefixer = require('gulp-autoprefixer'),
    minifycss = require('gulp-minify-css'),
    jshint = require('gulp-jshint'),
    uglify = require('gulp-uglify'),
    imagemin = require('gulp-imagemin'),
    rename = require('gulp-rename'),
    clean = require('gulp-clean'),
    concat = require('gulp-concat'),
    cache = require('gulp-cache'),
    livereload = require('gulp-livereload'),
    lr = require('tiny-lr'),
    es6ModuleTranspiler = require("gulp-es6-module-transpiler"),
    browserify = require('gulp-browserify'),
    handlebars = require('gulp-ember-handlebars'),
    es = require('event-stream'),
    gutil = require('gulp-util'),
    extend = require('lodash.assign'),
    handlebars = require('gulp-ember-handlebars'),
    server = lr();
    var handlebarsSettings = {
    outputType: 'browser', processName: function (sourceFile) {
    return sourceFile.split('/').pop().replace('.html', '').replace('_', '/').toLowerCase();
    }
    };

    function minispade(data) {
    //minispade.register('basecomponents/route', function () { });

    return es.map(function (file, cb) {
    var headerText = "minispade.register('" + file.relative.replace('\\', '/').replace('.js', '').toLowerCase() + "', function(){";
    var footertext = "});";

    file.contents = Buffer.concat([
    new Buffer(gutil.template(headerText, extend({file : file}, data))),file.contents,new Buffer(gutil.template(footertext, extend({ file: file }, data)))
    ]);
    cb(null, file);
    });
    };

    gulp.task('templates', function () {
    return gulp.src(['src/app/**/*.html'])
    .pipe(handlebars(handlebarsSettings))
    .pipe(concat('templates.js'))
    .pipe(gulp.dest('dist/scripts'));
    });
    gulp.task('templates-prod',['templates'], function () {
    return gulp.src(['src/app/**/*.html'])
    .pipe(handlebars(handlebarsSettings))
    .pipe(minispade())
    .pipe(uglify())
    .pipe(concat('templates-min.js'))
    .pipe(gulp.dest('dist/scripts'));
    });

    gulp.task('scripts', function () {
    return gulp.src(['src/app/**/*.js','!src/**/*_test.js'])
    .pipe(minispade())
    .pipe(concat('app.js'))
    .pipe(gulp.dest('dist/scripts'));
    });
    gulp.task('scripts-prod',['scripts'], function () {
    return gulp.src(['src/app/**/*.js', '!src/**/*_test.js'])
    .pipe(minispade())
    .pipe(uglify())
    .pipe(concat('app-min.js'))
    .pipe(gulp.dest('dist/scripts'));
    });

    gulp.task('sass', function () {
    return gulp.src('src/sass/*.scss')
    .pipe(sass({compass: true, cacheLocation: 'temp/'}))
    .pipe(gulp.dest('dist/content/'));
    });

    gulp.task('sass-prod',['sass'], function () {
    return gulp.src('src/sass/*.scss')
    .pipe(sass({ compass: true, cacheLocation: 'temp/', style: 'compressed' }))
    .pipe(rename({ suffix: '-min' }))
    .pipe(gulp.dest('dist/content/'));
    });

    gulp.task('clean', function () {
    return gulp.src(['dist/scripts/*.js', '!dist/scripts/loader.js','temp/', 'dist/content/*.css'], { read: false })
    .pipe(clean());
    });

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

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

    gulp.task('watch', function () {
    var scripts = gulp.watch('src/app/**/*.js', ['scripts']);
    scripts.on('change', function (event) {
    console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
    });
    var templates = gulp.watch('src/app/**/*.html', ['templates']);
    templates.on('change', function (event) {
    console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
    });

    });