-
Notifications
You must be signed in to change notification settings - Fork 56
/
Gruntfile.coffee
119 lines (106 loc) · 2.84 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
module.exports = ->
banner = """/* VIE.js <%= pkg.version %> - Semantic Interaction Toolkit
by Henri Bergius and the IKS Project. Available under the MIT license.
See http://viejs.org for more information
*/"""
# Project configuration
@initConfig
pkg: @file.readJSON 'package.json'
# Install dependencies
'bower-install-simple':
deps:
options:
interactive: false
forceLatest: false
directory: 'bower_components'
# Build setup: concatenate source files
concat:
options:
stripBanners: true
banner: "#{banner}(function () {"
footer: "})(this);"
full:
src: [
'src/VIE.js'
'src/Able.js'
'src/Util.js'
'src/Entity.js'
'src/Collection.js'
'src/Type.js'
'src/Attribute.js'
'src/Namespace.js'
# VIE 1.x API compatibility
'src/Classic.js'
# Services
'src/service/*.js'
# Views
'src/view/*.js'
# jQuery AJAX transport handler for IE
'src/xdr.js'
]
dest: 'dist/vie.js'
core:
src: [
'src/VIE.js'
'src/Able.js'
'src/Util.js'
'src/Entity.js'
'src/Collection.js'
'src/Type.js'
'src/Attribute.js'
'src/Namespace.js'
]
dest: 'dist/vie-core.js'
# JavaScript minification
uglify:
options:
banner: banner
report: 'min'
full:
files:
'dist/vie.min.js': ['dist/vie.js']
core:
files:
'dist/vie-core.min.js': ['dist/vie-core.js']
# Coding standards verification
jshint:
all: ['src/*.js', 'src/**/*.js']
# Web server for the browser tests
connect:
server:
options:
port: 8000
# Unit tests
qunit:
all:
options:
urls: ['http://localhost:8000/test/index.html']
nodeunit:
all: ['test/nodejs/*.js']
options:
reporter: 'verbose'
# Automated recompilation and testing when developing
watch:
files: [
'test/**/*.js'
'src/*.js'
'src/**/*.js'
]
tasks: ['test']
# Dependency installation
@loadNpmTasks 'grunt-bower-install-simple'
# Build dependencies
@loadNpmTasks 'grunt-contrib-concat'
@loadNpmTasks 'grunt-contrib-uglify'
# Testing dependencies
@loadNpmTasks 'grunt-contrib-connect'
@loadNpmTasks 'grunt-contrib-jshint'
@loadNpmTasks 'grunt-contrib-qunit'
@loadNpmTasks 'grunt-contrib-nodeunit'
@loadNpmTasks 'grunt-contrib-watch'
# Local tasks
@registerTask 'build', (target = 'full') =>
@task.run 'bower-install-simple'
@task.run "concat:#{target}"
@task.run "uglify:#{target}"
@registerTask 'test', [ 'jshint', 'build', 'connect', 'qunit', 'nodeunit']