-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.coffee
124 lines (111 loc) · 3.06 KB
/
gulpfile.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
gulp = require 'gulp'
streamify = require 'gulp-streamify'
uglify = require 'gulp-uglify'
sourcemaps = require 'gulp-sourcemaps'
changed = require 'gulp-changed'
coffee = require 'gulp-coffee'
sketch = require 'gulp-sketch'
cssimport = require 'gulp-cssimport'
autoprefixer = require 'gulp-autoprefixer'
minifyCss = require 'gulp-minify-css'
replace = require 'gulp-replace'
zip = require 'gulp-zip'
merge = require 'merge-stream'
runSequence = require 'run-sequence'
browserify = require 'browserify'
coffeeify = require 'coffeeify'
source = require 'vinyl-source-stream'
buffer = require 'vinyl-buffer'
rt = require 'react-templates'
map = require 'map-stream'
path = require 'path'
del = require 'del'
which = require('npm-which') __dirname
$ =
root: './src/root/*'
coffee: ['./src/coffee/popup.coffee', './src/coffee/background.coffee']
rt: './src/components/'
rtopt: modules: 'commonjs'
font: './node_modules/font-awesome/fonts/*.woff2'
css: './src/css/style.css'
sketch: './src/images/*.sketch'
dist: './dist/'
package: './dist/*'
gulp.task 'default', (cb) -> runSequence 'clean', [
'browserify'
'css'
'sketch'
'font-awesome'
'root'
], 'package', cb
gulp.task 'clean', (cb) -> del [$.dist], -> cb()
gulp.task 'rt', (cb) ->
gulp.src "#{$.rt}**/*.rt"
.pipe gulpRT $.rtopt
.pipe gulp.dest $.rt
gulp.task 'browserify', ['rt'], ->
merge stream =
for file in $.coffee
browserify
entries: [file]
extensions: ['.coffee', '.js']
debug: true
.transform coffeeify
.bundle()
.pipe source "#{path.basename file, '.coffee'}.js"
.pipe buffer()
.pipe sourcemaps.init loadMaps: true
.pipe streamify uglify()
.pipe sourcemaps.write './'
.pipe gulp.dest $.dist
gulp.task 'font-awesome', ->
gulp.src $.font
.pipe changed $.dist
.pipe gulp.dest $.dist
gulp.task 'css', ->
gulp.src $.css
.pipe cssimport()
.pipe replace '../fonts/', ''
.pipe autoprefixer 'last 2 versions'
.pipe minifyCss keepSpecialComments: 0
.pipe gulp.dest $.dist
gulp.task 'root', ->
gulp.src $.root
.pipe changed $.dist
.pipe gulp.dest $.dist
gulp.task 'sketch', ->
try
which.sync 'sketchtool'
catch error
gutil.log error
return
gulp.src $.sketch
.pipe sketch
export: 'artboards'
formats: 'png'
scales: '1.0'
.pipe gulp.dest $.dist
gulp.task 'package', ->
gulp.src [
$.package
'!*.map'
]
.pipe zip 'techdocs.zip'
.pipe gulp.dest './'
gulp.task 'watch', ->
o = debounceDelay: 3000
gulp.watch [
'./src/**/*.coffee'
'./src/**/*.rt'
], o, ['browserify']
gulp.watch ['./src/**/*.css'], o, ['css']
gulp.watch [$.sketch], o, ['sketch']
gulp.watch [$.root], o, ['root']
gulp.watch [$.package], o, ['package']
gulpRT = (option) ->
map (file, cb) ->
html = file.contents.toString()
js = rt.convertTemplateToReact html, option
file.contents = new Buffer js
file.path += '.js'
cb null, file