1 |
|
2 | gulp = require 'gulp'
|
3 | gutil = require 'gulp-util'
|
4 | plumber = require 'gulp-plumber'
|
5 | del = require 'del'
|
6 | path = require 'path'
|
7 | extend = require 'extend'
|
8 | minimist = require 'minimist'
|
9 | bundle = require './bundle'
|
10 |
|
11 | options = 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 |
|
23 | wrapper = 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 |
|
42 | Object.defineProperty wrapper, 'name',
|
43 | value: bundle.name+options.name.infix+bundle.version+options.name.extension
|
44 |
|
45 | Object.defineProperty wrapper, 'debug',
|
46 | value: gutil.env.target isnt 'production'
|
47 |
|
48 | Object.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 |
|
63 | Object.defineProperty wrapper, 'main',
|
64 | value: (bundle.main ? (wrapper.dirs.source + '/' + 'main.js'))
|
65 |
|
66 | Object.defineProperty wrapper, 'deploy',
|
67 | value: () ->
|
68 | if @debug
|
69 | @dest @dirs.test
|
70 | else
|
71 | @dest @dirs.dist
|
72 |
|
73 | gulp.task 'clean', (cb) ->
|
74 | del [
|
75 | wrapper.dirs.build + '/*'
|
76 | ], cb
|
77 |
|
78 | gulp.task 'clean:test', (cb) ->
|
79 | del [
|
80 | wrapper.dirs.test + '/*'
|
81 | ], cb
|
82 |
|
83 | gulp.task 'clean:dist', (cb) ->
|
84 | del [
|
85 | wrapper.dirs.dist + '/*'
|
86 | ], cb
|
87 |
|
88 | gulp.task 'deploy', (cb) ->
|
89 | wrapper.src('build/*')
|
90 | .pipe wrapper.deploy()
|
91 |
|
92 | module.exports = wrapper
|