UNPKG

2.11 kBtext/coffeescriptView Raw
1# Import gulp libraries
2gulp = require 'gulp'
3gutil = require 'gulp-util'
4plumber = require 'gulp-plumber'
5del = require 'del'
6path = require 'path'
7extend = require 'extend'
8minimist = require 'minimist'
9bundle = require './bundle'
10
11options = extend true, {
12 name:
13 infix: '-'
14 extension: '.js'
15 dirs:
16 source: 'src'
17 test: 'test'
18 build: 'build'
19 dist: 'dist'
20}, bundle?.gulp
21
22
23wrapper = extend {}, gulp, {
24 util: gutil
25 task: (params...) ->
26 gulp.task.call @, params...
27 watch: (params...) ->
28 gulp.watch.call @, params...
29 src: (params...) ->
30 if params.length is 0 or
31 (typeof params[0] isnt 'string' and not Array.isArray params[0])
32 params.unshift @dirs.source + '/*'
33 gulp.src.call(@, params...)
34 .pipe(plumber())
35 dest: (params...) ->
36 if params.length is 0 or typeof params[0] isnt 'string'
37 params.unshift @dirs.build + '/'
38 gulp.dest.call @, params...
39 env: minimist process.argv.slice 2
40}
41
42Object.defineProperty wrapper, 'name',
43 value: bundle.name+options.name.infix+bundle.version+options.name.extension
44
45Object.defineProperty wrapper, 'debug',
46 value: gutil.env.target isnt 'production'
47
48Object.defineProperty wrapper, 'dirs',
49 value: Object.create Object.prototype,
50 source:
51 value: options.dirs.source
52 enumerable: true
53 test:
54 value: options.dirs.test
55 enumerable: true
56 build:
57 value: options.dirs.build
58 enumerable: true
59 dist:
60 value: options.dirs.dist
61 enumerable: true
62
63Object.defineProperty wrapper, 'main',
64 value: (bundle.main ? (wrapper.dirs.source + '/' + 'main.js'))
65
66Object.defineProperty wrapper, 'deploy',
67 value: () ->
68 if @debug
69 @dest @dirs.test
70 else
71 @dest @dirs.dist
72
73gulp.task 'clean', (cb) ->
74 del [
75 wrapper.dirs.build + '/*'
76 ], cb
77
78gulp.task 'clean:test', (cb) ->
79 del [
80 wrapper.dirs.test + '/*'
81 ], cb
82
83gulp.task 'clean:dist', (cb) ->
84 del [
85 wrapper.dirs.dist + '/*'
86 ], cb
87
88gulp.task 'deploy', (cb) ->
89 wrapper.src('build/*')
90 .pipe wrapper.deploy()
91
92module.exports = wrapper