UNPKG

lazy.coffee

Version:

CoffeeScript Lazy Evaluation

65 lines (53 loc) 1.83 kB
extend = (base) -> (defaults...) -> #NOTE: modified inplace, use copy() to protect it. for d in defaults when d? base[k] ?= v for k, v of d #NOTE: null values will be replaced if a default value exists. return base gulp = require('gulp') del = require('del') uglify = require('gulp-uglify') sourcemaps = require('gulp-sourcemaps') rename = require('gulp-rename') filter = require('gulp-filter') gutil = require('gulp-util') watched_browserify = do -> watchify = require('watchify') browserify = require('browserify') source = require('vinyl-source-stream') (opts, piper) -> {src, rename: name} = opts b = browserify extend({entries: src, debug: true}) opts w = watchify browserify extend({entries: src, debug: true}) opts, watchify.args warn = (args...) -> gutil.log(args...); gutil.beep() build = -> piper(b.bundle().on('error', warn).pipe(source(name))) wbuild = -> piper(w.bundle().on('error', warn).pipe(source(name))) watch = -> w.on('log', gutil.log) w.on('update', wbuild) w.bundle() return {build, watch} coffee_builder = do -> buffer = require('vinyl-buffer') (fname, opts) -> watched_browserify { src: "./src/#{fname}.coffee" rename: "#{fname}.js" extensions: ['.coffee'] standalone: opts?.standalone ? fname }, (src) -> src.pipe(buffer()) #optional .pipe(sourcemaps.init({loadMaps: true})) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('./build')) .pipe(filter('*.js')) .pipe(sourcemaps.init({loadMaps: true})) .pipe(uglify()) .on('error', gutil.log) .pipe(rename(extname: '.min.js')) .pipe(sourcemaps.write('./')) .pipe(gulp.dest('./build')) gulp.task 'clean', (done) -> del(['build/*'], done) extend(global) { extend, gulp, del, gutil, uglify, sourcemaps, rename, filter, watched_browserify, coffee_builder, }