You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

148 lines
3.8 KiB

argv = require 'yargs' .argv
only-compile = false
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, ->
do function run-all
gulp.start do
\lib
\browserify
\css
\zip
\compressjs
...
watch for-browserify, ->
gulp.start \browserify
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
browserify-cache = {}
bundler = browserify do
entries: ls-entry-file
debug: true
paths:
src-path
...
extensions: <[ .ls ]>
cache: browserify-cache
package-cache: {}
plugin:
watchify unless only-compile
...
bundler.transform browserify-livescript
first-browserify-done = no
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 #{if out-dir isnt build-path then "out-dir: #{out-dir}"}"
console.log "------------------------------------------"
first-browserify-done := yes
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