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 | options = require path.resolve './package.json'
|
10 |
|
11 | wrapper = extend {}, gulp, {
|
12 | util: gutil
|
13 | task: (params...) ->
|
14 | gulp.task params...
|
15 | watch: (params...) ->
|
16 | gulp.watch params...
|
17 | src: (params...) ->
|
18 | if params.length is 0 or typeof params[0] isnt 'string'
|
19 | params.unshift @dirs.source + '/*'
|
20 | gulp.src(params...)
|
21 | .pipe(plumber())
|
22 | dest: (params...) ->
|
23 | if params.length is 0 or typeof params[0] isnt 'string'
|
24 | if @debug
|
25 | params.unshift @dirs.test
|
26 | else
|
27 | params.unshift @dirs.dist
|
28 | gulp.dest params...
|
29 | env: minimist process.argv.slice 2
|
30 | }
|
31 |
|
32 | Object.defineProperty wrapper, 'name',
|
33 | value: options.name+'-'+options.version+'.js'
|
34 |
|
35 | Object.defineProperty wrapper, 'debug',
|
36 | value: gutil.env.target isnt 'production'
|
37 |
|
38 | Object.defineProperty wrapper, 'dirs',
|
39 | value: Object.create Object.prototype,
|
40 | source: value: options.gulp?.source ? 'src'
|
41 | test: value: options.gulp?.test ? 'test'
|
42 | build: value: options.gulp?.build ? 'build'
|
43 | dist: value: options.gulp?.dist ? 'dist'
|
44 |
|
45 | Object.defineProperty wrapper, 'main',
|
46 | value: path.resolve (options.main ? (wrapper.dirs.source + '/' + 'main.js'))
|
47 |
|
48 | gulp.task 'clean', (cb) ->
|
49 | del [
|
50 | wrapper.dirs.build + '/**'
|
51 | ], cb
|
52 |
|
53 | module.exports = wrapper
|