-
Notifications
You must be signed in to change notification settings - Fork 75
Expand file tree
/
Copy pathgulpfile.ls
More file actions
145 lines (123 loc) · 3.67 KB
/
gulpfile.ls
File metadata and controls
145 lines (123 loc) · 3.67 KB
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
argv = require 'yargs' .argv
only-compile = argv.only-compile
require! <[ watchify gulp browserify glob path fs globby touch gulp-livescript]>
require! 'prelude-ls': {union, join, keys, map, unique}
require! 'vinyl-source-stream': source
require! 'vinyl-buffer': buffer
require! 'gulp-watch': watch
require! 'gulp-pug': pug
require! 'gulp-stylus': stylus
require! 'node-notifier': notifier
require! 'gulp-concat': cat
require! 'gulp-uglify': uglify
require! 'gulp-flatten': flatten
require! 'gulp-tap': tap
require! 'gulp-cached': cache
require! 'gulp-sourcemaps': sourcemaps
require! 'browserify-livescript'
require! 'run-sequence'
require! 'through2':through
require! 'optimize-js'
require! 'gulp-if-else': if-else
require! 'gulp-rename': rename
require! 'gulp-zip': zip
require! 'gulp-remove-files': remove-files
# Build Settings
notification-enabled = yes
# Project Folder Structure
src-path = "#{__dirname}/src"
build-path = "#{__dirname}/build"
out-dir = argv.out-dir or build-path
on-error = (source, msg) ->
msg = try
msg.to-string!
catch
"unknown message: #{e}"
console-msg = "GULP ERROR: #{source} : #{msg}"
console.log console-msg
log-info = (source, msg) ->
msg = try
msg.to-string!
catch
"unknown message: #{e}"
console-msg = "GULP INFO: #{source} : #{msg}"
console.log console-msg
ls-entry-file = "#{src-path}/loading-bar.ls"
for-browserify =
"#{src-path}/*.ls"
...
# Organize Tasks
gulp.task \default, (done) ->
do function run-all
gulp.start do
\lib
\browserify
\css
\zip
\compressjs
...
if argv.only-compile
return done!
watch ["#{src-path}/*.styl"], ->
gulp.start \css
watch ["#{src-path}/*.ls"], ->
gulp.start \lib
watch ["#{out-dir}/*.js", "#{out-dir}/*.css"], ->
gulp.start \zip
watch ["#{out-dir}/loading-bar.js"], ->
gulp.start \compressjs
bundler = browserify do
entries: ls-entry-file
debug: true
paths:
src-path
...
extensions: <[ .ls ]>
cache: {} # required for watchify
package-cache: {} # required for watchify
plugin:
watchify unless only-compile
...
bundler.transform browserify-livescript
function bundle
bundler
.bundle!
.on \error, (err) ->
msg = try
err.message
catch
err
on-error \browserify, msg
@emit \end
.pipe source "loading-bar.js"
.pipe buffer!
#.pipe sourcemaps.init {+load-maps, +large-files}
.pipe if-else only-compile, uglify
#.pipe rename basename: 'app'
#.pipe sourcemaps.write '.'
.pipe gulp.dest out-dir
.pipe tap (file) ->
log-info \browserify, "Browserify finished."
console.log "------------------------------------------"
gulp.task \browserify, ->
bundle!
gulp.task \lib, ->
gulp.src \src/*.ls
.pipe gulp-livescript bare: true
.pipe gulp.dest 'lib'
gulp.task \css, ->
gulp.src \src/loading-bar.styl
.pipe stylus({compress: true})
.pipe gulp.dest out-dir
.pipe tap (file) ->
log-info \css, "Stylus -> CSS finished #{if out-dir isnt build-path then "out-dir: #{out-dir}"}"
console.log "------------------------------------------"
gulp.task \zip, ->
gulp.src ["#out-dir/*.js","#out-dir/*.css", "!build/*.min.*"]
.pipe zip("loading-bar.zip")
.pipe gulp.dest out-dir
gulp.task \compressjs, ->
gulp.src ["#out-dir/*.js", "!build/*.min.*"]
.pipe uglify!
.pipe rename suffix: \.min
.pipe gulp.dest out-dir