-
Notifications
You must be signed in to change notification settings - Fork 1
/
Gruntfile.js
144 lines (131 loc) · 3.41 KB
/
Gruntfile.js
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// Most of this is from: http://www.sitepoint.com/writing-awesome-build-script-grunt/
module.exports = function(grunt) {
'use strict';
grunt.initConfig({
copy: {
build: {
cwd: 'src',
src: [ '**', '!**/*.coffee', '!**/*.jade' ],
dest: 'dist',
expand: true
},
vendor: {
cwd: 'vendor',
src: [ 'jquery-3.2.1.min.js' ],
dest: 'dist',
expand: true
},
},
clean: {
build: {
src: [ 'dist' ]
},
scripts: {
src: [ 'dist/**/*.js', '!dist/jquery-freud.js', '!dist/jquery-freud.min.js', '!dist/jquery-3.2.1.min.js', '!dist/tests.js' ]
},
},
coffee: {
build: {
expand: true,
cwd: 'src',
src: [ '**/**.coffee' ],
dest: 'dist',
ext: '.js'
}
},
uglify: {
build: {
options: {
mangle: false
},
files: {
'dist/jquery-freud.min.js': [ 'dist/jquery-freud.js' ]
}
}
},
jade: {
compile: {
options: {
data: {}
},
files: [{
expand: true,
cwd: 'src',
src: [ '**/*.jade' ],
dest: 'dist',
ext: '.html'
}]
}
},
watch: {
scripts: {
files: 'src/**/*.coffee',
tasks: [ 'scripts' ]
},
jade: {
files: 'src/**/*.jade',
tasks: [ 'jade' ]
},
copy: {
files: [ 'src/**', '!src/**/*.coffee', '!src/**/*.jade' ],
tasks: [ 'copy:build' ]
},
copy_vendor: {
files: [ 'vendor/jquery-3.2.1.min.js' ],
tasks: [ 'copy:vendor' ]
}
},
connect: {
server: {
options: {
port: 4000,
base: 'dist',
hostname: '*'
}
}
},
jasmine : {
src : 'dist/jquery-freud.js',
options : {
vendor: ['vendor/jquery-3.2.1.min.js'],
specs : 'spec/**/*.js'
}
},
});
// Copy files in preparation of building
grunt.loadNpmTasks('grunt-contrib-copy');
// Delete files and directories before and after building
grunt.loadNpmTasks('grunt-contrib-clean');
// Compile coffeescript to js
grunt.loadNpmTasks('grunt-contrib-coffee');
// Minification of our js
grunt.loadNpmTasks('grunt-contrib-uglify');
// Template language used to build the development test page
grunt.loadNpmTasks('grunt-contrib-jade');
// Auto-run building for coffee and jade
grunt.loadNpmTasks('grunt-contrib-watch');
// Static file web server for test page
grunt.loadNpmTasks('grunt-contrib-connect');
// Testing framework based on PhantomJS
grunt.loadNpmTasks('grunt-contrib-jasmine');
// Task to build the plugin from coffeescript to javascript
grunt.registerTask(
'scripts',
'Compiles the JavaScript files.',
[ 'coffee', 'uglify', 'clean:scripts' ]
);
// The general build task including jade
grunt.registerTask(
'build',
'Compiles all of the assets and copies the files to the dist directory.',
[ 'clean:build', 'copy:build', 'copy:vendor', 'scripts', 'jade' ]
);
// For running our tests
grunt.registerTask('test', ['build', 'jasmine']);
// Default task that runs watcher, dev server and watches for changes and compiles them.
grunt.registerTask(
'default',
'Watches the project for changes, automatically builds them and runs a server.',
[ 'build', 'connect', 'watch' ]
);
};