Browse Source

Support for coffeescript

Tobias Reich 9 years ago
parent
commit
b66bcff640
2 changed files with 111 additions and 33 deletions
  1. 109 33
      src/gulpfile.js
  2. 2 0
      src/package.json

+ 109 - 33
src/gulpfile.js

@@ -1,16 +1,67 @@
 var	gulp = require('gulp'),
-	plugins = require("gulp-load-plugins")();
+	plugins = require("gulp-load-plugins")(),
+	paths = {}
 
-var paths = {
-	view: [
+/* Error Handler -------------------------------- */
+
+var catchError = function(err) {
+
+	console.log(err.toString());
+	this.emit('end');
+
+}
+
+/* View ----------------------------------------- */
+
+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/build.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('view--coffee', function() {
+
+	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('view--scripts', ['view--js', 'view--coffee'], function() {
+
+	return	gulp.src(paths.view.scripts)
+				.pipe(plugins.concat('view.js', {newLine: "\n"}))
+				.pipe(plugins.uglify())
+				.on('error', catchError)
+				.pipe(gulp.dest('../dist/'));
+
+});
+
+/* Main ----------------------------------------- */
+
+paths.main = {
 	js: [
 		'bower_components/jQuery/dist/jquery.min.js',
 		'bower_components/js-md5/js/md5.min.js',
@@ -18,54 +69,79 @@ var paths = {
 		'bower_components/mousetrap/plugins/global-bind/mousetrap-global-bind.min.js',
 		'../src/scripts/*.js'
 	],
-	css: [
+	coffee: [
+		'../src/scripts/*.coffee'
+	],
+	scripts: [
+		'../dist/_main--javascript.js',
+		'../dist/_main--coffee.js'
+	],
+	styles: [
 		'../src/styles/main.scss'
 	]
 }
 
-var catchError = function(err) {
+gulp.task('main--js', function() {
 
-	console.log(err.toString());
-	this.emit('end');
+	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('view', function() {
+gulp.task('main--scripts', ['main--js', 'main--coffee'], function() {
 
-	gulp.src(paths.view)
-		.pipe(plugins.concat('view.js', {newLine: "\n"}))
-		.pipe(plugins.uglify())
-		.on('error', catchError)
-		.pipe(gulp.dest('../dist/'));
+	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('js', function() {
+gulp.task('main--styles', 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.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/'));
 
 });
 
-gulp.task('css', function() {
+/* Clean ----------------------------------------- */
 
-	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/'));
+gulp.task('clean', function() {
+
+	return	gulp.src('../dist/_*.*', { read: false })
+				.pipe(plugins.rimraf({ force: true }))
+				.on('error', catchError);
 
 });
 
-gulp.task('default', ['view', 'js', 'css']);
+/* 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']);
+
 });

+ 2 - 0
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"
   }