Support for coffeescript

This commit is contained in:
Tobias Reich 2014-10-21 13:12:49 +02:00
parent 2b4a6c4eb5
commit b66bcff640
2 changed files with 124 additions and 46 deletions

View File

@ -1,27 +1,8 @@
var gulp = require('gulp'), var gulp = require('gulp'),
plugins = require("gulp-load-plugins")(); plugins = require("gulp-load-plugins")(),
paths = {}
var paths = { /* Error Handler -------------------------------- */
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'
]
}
var catchError = function(err) { var catchError = function(err) {
@ -30,42 +11,137 @@ var catchError = function(err) {
} }
gulp.task('view', function() { /* View ----------------------------------------- */
gulp.src(paths.view) paths.view = {
.pipe(plugins.concat('view.js', {newLine: "\n"})) js: [
.pipe(plugins.uglify()) 'bower_components/jQuery/dist/jquery.min.js',
.on('error', catchError) 'bower_components/js-md5/js/md5.min.js',
.pipe(gulp.dest('../dist/')); '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) return gulp.src(paths.view.coffee)
.pipe(plugins.concat('main.js', {newLine: "\n"})) .pipe(plugins.coffee({bare: true}))
.pipe(plugins.uglify()) .on('error', catchError)
.on('error', catchError) .pipe(plugins.concat('_view--coffee.js', {newLine: "\n"}))
.pipe(gulp.dest('../dist/')); .pipe(gulp.dest('../dist/'));
}); });
gulp.task('css', function() { gulp.task('view--scripts', ['view--js', 'view--coffee'], function() {
gulp.src(paths.css) return gulp.src(paths.view.scripts)
.pipe(plugins.sass()) .pipe(plugins.concat('view.js', {newLine: "\n"}))
.on('error', catchError) .pipe(plugins.uglify())
.pipe(plugins.concat('main.css', {newLine: "\n"})) .on('error', catchError)
.pipe(plugins.autoprefixer('last 4 versions', '> 5%')) .pipe(gulp.dest('../dist/'));
.pipe(plugins.minifyCss())
.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.task('watch', ['default'], function() {
gulp.watch(paths.view, ['view']);
gulp.watch(paths.js, ['js']); gulp.watch(paths.view.js, ['view--scripts', 'clean']);
gulp.watch(paths.css, ['css']); 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']);
}); });

View File

@ -12,9 +12,11 @@
"devDependencies": { "devDependencies": {
"gulp": "^3.8.8", "gulp": "^3.8.8",
"gulp-autoprefixer": "1.0.1", "gulp-autoprefixer": "1.0.1",
"gulp-coffee": "^2.2.0",
"gulp-concat": "^2.4.1", "gulp-concat": "^2.4.1",
"gulp-load-plugins": "^0.7.0", "gulp-load-plugins": "^0.7.0",
"gulp-minify-css": "^0.3.10", "gulp-minify-css": "^0.3.10",
"gulp-rimraf": "^0.1.1",
"gulp-sass": "^1.1.0", "gulp-sass": "^1.1.0",
"gulp-uglify": "^1.0.1" "gulp-uglify": "^1.0.1"
} }