From b66bcff640902bd5f03b4236af9034a4a9e564e1 Mon Sep 17 00:00:00 2001 From: Tobias Reich Date: Tue, 21 Oct 2014 13:12:49 +0200 Subject: [PATCH] Support for coffeescript --- src/gulpfile.js | 168 ++++++++++++++++++++++++++++++++++------------- src/package.json | 2 + 2 files changed, 124 insertions(+), 46 deletions(-) diff --git a/src/gulpfile.js b/src/gulpfile.js index 151ceb3..94be382 100644 --- a/src/gulpfile.js +++ b/src/gulpfile.js @@ -1,27 +1,8 @@ var gulp = require('gulp'), - plugins = require("gulp-load-plugins")(); + plugins = require("gulp-load-plugins")(), + paths = {} -var paths = { - view: [ - 'bower_components/jQuery/dist/jquery.min.js', - 'bower_components/js-md5/js/md5.min.js', - 'bower_components/mousetrap/mousetrap.min.js', - 'bower_components/mousetrap/plugins/global-bind/mousetrap-global-bind.min.js', - '../src/scripts/_frameworks.js', - '../src/scripts/build.js', - '../src/scripts/view/main.js' - ], - js: [ - 'bower_components/jQuery/dist/jquery.min.js', - 'bower_components/js-md5/js/md5.min.js', - 'bower_components/mousetrap/mousetrap.min.js', - 'bower_components/mousetrap/plugins/global-bind/mousetrap-global-bind.min.js', - '../src/scripts/*.js' - ], - css: [ - '../src/styles/main.scss' - ] -} +/* Error Handler -------------------------------- */ var catchError = function(err) { @@ -30,42 +11,137 @@ var catchError = function(err) { } -gulp.task('view', function() { +/* View ----------------------------------------- */ - gulp.src(paths.view) - .pipe(plugins.concat('view.js', {newLine: "\n"})) - .pipe(plugins.uglify()) - .on('error', catchError) - .pipe(gulp.dest('../dist/')); +paths.view = { + js: [ + 'bower_components/jQuery/dist/jquery.min.js', + 'bower_components/js-md5/js/md5.min.js', + 'bower_components/mousetrap/mousetrap.min.js', + 'bower_components/mousetrap/plugins/global-bind/mousetrap-global-bind.min.js', + '../src/scripts/_frameworks.js', + '../src/scripts/view/main.js' + ], + coffee: [ + '../src/scripts/build.coffee' + ], + scripts: [ + '../dist/_view--javascript.js', + '../dist/_view--coffee.js' + ] +} + +gulp.task('view--js', function() { + + return gulp.src(paths.view.js) + .pipe(plugins.concat('_view--javascript.js', {newLine: "\n"})) + .pipe(gulp.dest('../dist/')); }); -gulp.task('js', function() { +gulp.task('view--coffee', function() { - gulp.src(paths.js) - .pipe(plugins.concat('main.js', {newLine: "\n"})) - .pipe(plugins.uglify()) - .on('error', catchError) - .pipe(gulp.dest('../dist/')); + return gulp.src(paths.view.coffee) + .pipe(plugins.coffee({bare: true})) + .on('error', catchError) + .pipe(plugins.concat('_view--coffee.js', {newLine: "\n"})) + .pipe(gulp.dest('../dist/')); }); -gulp.task('css', function() { +gulp.task('view--scripts', ['view--js', 'view--coffee'], function() { - gulp.src(paths.css) - .pipe(plugins.sass()) - .on('error', catchError) - .pipe(plugins.concat('main.css', {newLine: "\n"})) - .pipe(plugins.autoprefixer('last 4 versions', '> 5%')) - .pipe(plugins.minifyCss()) - .pipe(gulp.dest('../dist/')); + return gulp.src(paths.view.scripts) + .pipe(plugins.concat('view.js', {newLine: "\n"})) + .pipe(plugins.uglify()) + .on('error', catchError) + .pipe(gulp.dest('../dist/')); }); -gulp.task('default', ['view', 'js', 'css']); +/* Main ----------------------------------------- */ + +paths.main = { + js: [ + 'bower_components/jQuery/dist/jquery.min.js', + 'bower_components/js-md5/js/md5.min.js', + 'bower_components/mousetrap/mousetrap.min.js', + 'bower_components/mousetrap/plugins/global-bind/mousetrap-global-bind.min.js', + '../src/scripts/*.js' + ], + coffee: [ + '../src/scripts/*.coffee' + ], + scripts: [ + '../dist/_main--javascript.js', + '../dist/_main--coffee.js' + ], + styles: [ + '../src/styles/main.scss' + ] +} + +gulp.task('main--js', function() { + + return gulp.src(paths.main.js) + .pipe(plugins.concat('_main--javascript.js', {newLine: "\n"})) + .pipe(gulp.dest('../dist/')); + +}); + +gulp.task('main--coffee', function() { + + return gulp.src(paths.main.coffee) + .pipe(plugins.coffee({bare: true})) + .on('error', catchError) + .pipe(plugins.concat('_main--coffee.js', {newLine: "\n"})) + .pipe(gulp.dest('../dist/')); + +}); + +gulp.task('main--scripts', ['main--js', 'main--coffee'], function() { + + return gulp.src(paths.main.scripts) + .pipe(plugins.concat('main.js', {newLine: "\n"})) + .pipe(plugins.uglify()) + .on('error', catchError) + .pipe(gulp.dest('../dist/')); + +}); + +gulp.task('main--styles', function() { + + return gulp.src(paths.main.styles) + .pipe(plugins.sass()) + .on('error', catchError) + .pipe(plugins.concat('main.css', {newLine: "\n"})) + .pipe(plugins.autoprefixer('last 4 versions', '> 5%')) + .pipe(plugins.minifyCss()) + .pipe(gulp.dest('../dist/')); + +}); + +/* Clean ----------------------------------------- */ + +gulp.task('clean', function() { + + return gulp.src('../dist/_*.*', { read: false }) + .pipe(plugins.rimraf({ force: true })) + .on('error', catchError); + +}); + +/* Tasks ----------------------------------------- */ + +gulp.task('default', ['view--scripts', 'main--scripts', 'main--styles', 'clean']); gulp.task('watch', ['default'], function() { - gulp.watch(paths.view, ['view']); - gulp.watch(paths.js, ['js']); - gulp.watch(paths.css, ['css']); + + gulp.watch(paths.view.js, ['view--scripts', 'clean']); + gulp.watch(paths.view.coffee, ['view--scripts', 'clean']); + + gulp.watch(paths.main.js, ['main--scripts', 'clean']); + gulp.watch(paths.main.coffee, ['main--scripts', 'clean']); + gulp.watch(paths.main.styles, ['main--styles', 'clean']); + }); \ No newline at end of file diff --git a/src/package.json b/src/package.json index b0b0b83..e40a0ba 100644 --- a/src/package.json +++ b/src/package.json @@ -12,9 +12,11 @@ "devDependencies": { "gulp": "^3.8.8", "gulp-autoprefixer": "1.0.1", + "gulp-coffee": "^2.2.0", "gulp-concat": "^2.4.1", "gulp-load-plugins": "^0.7.0", "gulp-minify-css": "^0.3.10", + "gulp-rimraf": "^0.1.1", "gulp-sass": "^1.1.0", "gulp-uglify": "^1.0.1" }