-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gruntfile.coffee
41 lines (31 loc) · 1.22 KB
/
Gruntfile.coffee
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
path = require 'path'
src = [ 'lib/**/*.coffee', 'index.coffee' ]
dist = 'dist'
config = ( grunt ) ->
tasks :
coffee :
options : { sourceMap : false, bare : true, force : true }
dist : { expand : true, src : src, dest : dist, ext : '.js' }
clean : { dist : [ dist, '*.{js,map}', 'lib/**/*.{map,js}' ] }
coffeelint : { app : src }
watch : { coffee : { tasks : [ 'coffee' ], files : src } }
exec :
mocha : { cmd : 'mocha --require ./coffee-coverage-loader.coffee' }
istanbul : { cmd : 'istanbul report lcov' }
open_coverage : { cmd : 'open ./coverage/lcov-report/index.html' }
register :
coverage : [ 'exec:istanbul', 'exec:open_coverage' ]
test : [ 'exec:mocha', 'coverage' ]
default : [ 'coffeelint', 'clean:dist', 'coffee:dist' ]
doConfig = ( cfg ) -> ( grunt ) ->
opts = cfg grunt
pkg = opts.tasks.pkg = grunt.file.readJSON "package.json"
grunt.initConfig opts.tasks
opts.load ?= []
dev = Object.keys pkg.devDependencies
deps = (f for f in dev when f.indexOf('grunt-') is 0)
opts.load = opts.load.concat deps
grunt.loadNpmTasks t for t in opts.load
for own name, tasks of opts.register
grunt.registerTask name, tasks
module.exports = doConfig config