-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gruntfile.coffee
91 lines (84 loc) · 2.28 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
'use strict'
module.exports = (grunt) ->
mainCoffeeDir = 'src/'
testCoffeeDir = 'test/'
mainJsDir = 'build/src/'
testJsDir = 'build/test/'
vendorJsDir = 'vendor/'
mainModuleDir = 'build/modules/main/'
vendorModuleDir = 'build/modules/vendor/'
grunt.initConfig(
pkg: grunt.file.readJSON('package.json')
banner:
"""
/*! <%= pkg.name %> v<%= pkg.version %> - <%= pkg.homepage %>
* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>
* Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %>
*/
"""
coffee:
options:
bare: true
main:
expand: true
cwd: mainCoffeeDir
src: ['**/*.coffee']
dest: mainJsDir
ext: '.js'
test:
expand: true
cwd: testCoffeeDir
src: ['**/*.coffee']
dest: testJsDir
ext: '.js'
commonjs:
main:
cwd: mainJsDir
src: ['**/*.js']
dest: mainModuleDir
vendor:
cwd: vendorJsDir
src: ['**/*.js']
dest: vendorModuleDir
jasmine:
main:
src: [
"#{mainModuleDir}/**/*.js"
]
options:
verbose: true
specs: [
"#{testJsDir}/**/*.js"
]
vendor: [
"lib/**/*.js"
"#{vendorModuleDir}/**/*.js"
]
uglify:
unminified:
src: [
"#{mainModuleDir}**/*.js"
]
dest: 'dist/<%= pkg.name %>.js'
options:
mangle: false
compress: false
beautify: true
sourceMap: '<%= uglify.unminified.dest %>.map'
minified:
src: ["#{mainModuleDir}/**/*.js"]
dest: 'dist/<%= pkg.name %>.min.js'
options:
sourceMap: '<%= uglify.minified.dest %>.map'
watch:
main:
files: ["#{mainCoffeeDir}/**/*.coffee", "#{testCoffeeDir}/**/*.coffee"]
tasks: ['coffee', 'commonjs', 'jasmine']
)
grunt.loadNpmTasks 'grunt-commonjs'
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-uglify'
grunt.loadNpmTasks 'grunt-contrib-jasmine'
grunt.loadNpmTasks 'grunt-contrib-jshint'
grunt.loadNpmTasks 'grunt-contrib-watch'
grunt.registerTask 'default', ['coffee', 'commonjs', 'jasmine', 'uglify']