forked from js2coffee/js2coffee
/
Cakefile
53 lines (40 loc) · 1.45 KB
/
Cakefile
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
{spawn, exec} = require 'child_process'
# Tasks
task 'test', 'Run tests', ->
run 'coffee test/test.coffee'
task 'build', 'Builds the browser version', ->
{readFileSync, writeFileSync} = require('fs')
{compile} = require('coffee-script')
run 'mkdir -p dist'
output = [
readFileSync('lib/narcissus_packed.js', 'utf-8')
compile(readFileSync('lib/node_ext.coffee', 'utf-8'))
compile(readFileSync('lib/helpers.coffee', 'utf-8'))
compile(readFileSync('lib/js2coffee.coffee', 'utf-8'))
]
combined = output.join("\n")
compressed = pack(combined)
writeFileSync 'dist/js2coffee.js', combined
writeFileSync 'dist/js2coffee.min.js', compressed
console.log '* dist/js2coffee.js'
console.log '* dist/js2coffee.min.js'
# Helpers
run = (cmd, callback, options={}) ->
console.warn "$ #{cmd}" unless options.quiet?
exec cmd, (err, stdout, stderr) ->
callback() if typeof callback == 'function'
console.warn stderr if stderr
console.log stdout if stdout
# Compress JS with simple regexes. (Because common packers
# seem to munge Narcissus badly)
pack = (str) ->
spaces = new RegExp(' *(\n *)+', 'g')
comments = /\/\*(\n|.)*?\*\//g
line_comments = /\/\/.*\n/g
compressed = str
compressed = compressed.replace(comments, " ")
compressed = compressed.replace(line_comments, "\n")
compressed = compressed.replace(spaces, "\n")
compressed
task 'doc', 'Builds docs', ->
run "docco lib/js2coffee.coffee"