Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- connect = require 'connect'
- gulp = require 'gulp'
- lr = require 'connect-livereload'
- link = require './link.json'
- server = (require 'tiny-lr')()
- tasks = (require 'gulp-load-plugins')()
- watch = require 'gulp-watch'
- plumber = require 'gulp-plumber'
- cached = require 'gulp-cached'
- fs = require 'fs'
- ### ###
- coffee = []
- js = []
- sass = []
- css = []
- copy = []
- ### ###
- getCoffee = (src, dest, prefix='') ->
- for s in src._scripts_ when /\.coffee$/.test s
- text = "#{prefix}#{s}"
- unless text in dest
- dest.push text
- gulp.task 'bower', ->
- tasks.bower link.lib
- .pipe gulp.dest link.lib
- gulp.task 'clean:out', ->
- gulp.src link.out, read: false
- .pipe tasks.clean()
- gulp.task 'lint', ->
- gulp.src (s for s in link._scripts_ when /\.coffee$/.test s)
- .pipe tasks.coffeelint()
- .pipe tasks.coffeelint.reporter()
- gulp.task 'parse', ['bower'], ->
- coffee = []
- js = []
- sass = []
- css = []
- copy = []
- getSass = (src, dest, prefix='') ->
- for s in src._styles_
- text = "#{prefix}#{s}"
- unless text in dest
- dest.push text
- getCopy = (src, dest, prefix='') ->
- for s in src._to_copy_
- text = "#{prefix}#{s}"
- unless text in dest
- dest.push text
- getCss = (src, dest) ->
- for s in src._styles_
- text = '<link rel="stylesheet" href="' + s.replace(/.*\*\*\//, '').replace(/\.scss$/, '.css') + '"/>'
- unless text in dest
- dest.push text
- getJs = (src, dest) ->
- for s in src._scripts_
- if /\.js$/.test s
- text = '<script src="../' + s + '"></script>'
- else
- text = '<script src="' + s.replace(/.*\*\*\//, '').replace(/\.coffee$/, '.js') + '"></script>'
- unless text in dest
- dest.push text
- getAll = (file, prefix='') ->
- if file._external_?
- for l in file._external_
- e_link = require "#{l}link.json"
- getAll e_link, l
- getCoffee file, coffee, prefix
- getSass file, sass, prefix
- getCopy file, copy, prefix
- getCss file, css
- getJs file, js
- getAll link
- getCoffee link._local_, coffee
- getJs link._local_, js
- gulp.task 'copy', ['parse', 'bower'], ->
- gulp.src copy
- .pipe gulp.dest link.temp
- .pipe tasks.livereload server
- gulp.task 'sass', ['parse', 'bower'], ->
- gulp.src sass
- .pipe tasks.sass()
- .pipe gulp.dest link.temp
- .pipe tasks.livereload server
- gulp.task 'coffee', ['parse', 'bower'], ->
- gulp.src coffee
- .pipe cached('coffee')
- .pipe tasks.sourcemaps.init()
- .pipe tasks.coffee(bare: true).on 'error', tasks.util.log
- .pipe tasks.sourcemaps.write()
- .pipe gulp.dest link.temp
- .pipe tasks.livereload server
- gulp.task 'link', ['parse', 'sass', 'coffee', 'copy', 'makeSettings'], ->
- gulp.src link.index
- .pipe tasks.replace(/<!--\s*scripts\s*-->/, js.join '\n ')
- .pipe tasks.replace(/<!--\s*styles\s*-->/, css.join '\n ')
- .pipe gulp.dest link.temp
- gulp.task 'http-server', (cb) ->
- connect()
- .use lr()
- .use connect.static require('path').resolve ''
- .listen '8888'
- cb()
- gulp.task 'open', ['link', 'http-server'], (cb) ->
- gulp.src link.index
- .pipe tasks.open '', {app: 'chrome', url: "http://localhost:8888/#{link.temp}index.html"}
- cb()
- gulp.task 'serve', ['open'], ->
- server.listen(35729, ->
- gulp.watch link._to_copy_, ['copy']
- gulp.watch link._styles_, ['sass']
- gulp.watch link._scripts_, ['coffee']
- )
- gulp.task 'test', ['bower', 'lint'], ->
- gulp.src link.test
- .pipe tasks.karma configFile: 'test/karma.conf.js'
- gulp.task 'dev', ->
- files = []
- getCoffee link, files
- getCoffee link._local_, files
- gulp.src files
- .pipe watch()
- .pipe plumber()
- .pipe tasks.sourcemaps.init()
- .pipe tasks.coffee(bare: true).on 'error', tasks.util.log
- .pipe tasks.sourcemaps.write()
- .pipe gulp.dest link.temp
- gulp.task 'makeSettings', ['bower', 'clean:out'], (cb) ->
- settings = {}
- extend = (dst, src) ->
- for own key of src
- if typeof dst[key] is 'object'
- extend dst[key], src[key]
- else
- dst[key] = src[key]
- for l in link._external_
- e_link = require "#{l}link.json"
- if e_link.settings
- extend settings, require "#{l}#{e_link.settings}"
- if link.settings
- extend settings, require "./#{link.settings}"
- unless fs.existsSync link.temp
- fs.mkdirSync link.temp
- fs.writeFile "#{link.temp}settings.json", JSON.stringify settings, null, ' '
- cb()
- gulp.task 'copy:production', ['parse', 'bower', 'clean:out'], ->
- copy.push ".tmp/settings.json"
- gulp.src copy
- .pipe gulp.dest link.dst.production
- gulp.task 'copy:dev', ['parse', 'bower', 'clean:out'], ->
- copy.push ".tmp/settings.json"
- gulp.src copy
- .pipe gulp.dest link.dst.dev
- gulp.task 'imagemin:production', ['copy:production'], ->
- gulp.src "#{link.dst.production}**"
- .pipe tasks.imagemin()
- .pipe gulp.dest link.dst.production
- gulp.task 'imagemin:dev', ['copy:dev'], ->
- gulp.src "#{link.dst.dev}**"
- .pipe tasks.imagemin()
- .pipe gulp.dest link.dst.dev
- gulp.task 'usemin:production', ['link', 'clean:out'], ->
- gulp.src "#{link.temp}index.html"
- .pipe tasks.usemin js: [tasks.uglify()], css: [tasks.minifyCss(), 'concat'], html: [tasks.minifyHtml()]
- .pipe gulp.dest link.dst.production
- gulp.task 'usemin:dev', ['link', 'clean:out'], ->
- gulp.src "#{link.temp}index.html"
- .pipe tasks.usemin css: [tasks.minifyCss(), 'concat']
- .pipe gulp.dest link.dst.dev
- gulp.task 'build:production', ['imagemin:production', 'usemin:production']
- gulp.task 'build:dev', ['imagemin:dev', 'usemin:dev']
- gulp.task 'build', ['build:production', 'build:dev']
- gulp.task 'default', ['test']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement