Advertisement
Guest User

Untitled

a guest
Aug 2nd, 2015
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. fs = require 'fs'
  2. path = require 'path'
  3. source = require 'vinyl-source-stream'
  4. buffer = require 'vinyl-buffer'
  5. stream = require 'vinyl-to-stream'
  6. watchify = require 'watchify'
  7. browserify = require 'browserify'
  8.  
  9.  
  10. defaultOptions =
  11. extensions: ['.coffee']
  12. debug: true
  13. cache: {}
  14. packageCache: {}
  15. transform: ["coffeeify"]
  16.  
  17.  
  18. defaults = (target, def) ->
  19. for own key, val of def when not (key of target)
  20. target[key] = val
  21. target
  22.  
  23.  
  24. module.exports = (src, dest, getInstance = false, opts = {}) ->
  25. config = defaults(opts, defaultOptions)
  26. config.entries = [src]
  27.  
  28. fileName = "#{path.basename(dest, '.coffee')}.js"
  29. log = console.log.bind(console, "watchify: #{src} -> #{dest}")
  30. b = watchify browserify config
  31.  
  32. bundle = ->
  33. unless b
  34. b = watchify browserify config
  35. events()
  36.  
  37. b.bundle()
  38. .on 'error', (err) ->
  39. console.error('watchify ', err.toString())
  40. this.emit('end')
  41. b = null
  42. .pipe source(fileName)
  43. .pipe buffer()
  44. .pipe stream()
  45. .pipe fs.createWriteStream(dest)
  46.  
  47. events = ->
  48. b.on('update', bundle)
  49. b.on('log', log)
  50. events()
  51.  
  52. return if getInstance then {b, bundle} else bundle
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement