1
- const websiteWebpackConfigDev = require ( './webpack.website-dev.js' ) ;
2
- const websiteWebpackConfigProd = require ( './webpack.website-prod.js' ) ;
3
-
4
1
module . exports = grunt => {
5
2
grunt . loadNpmTasks ( 'grunt-contrib-copy' ) ;
6
3
grunt . loadNpmTasks ( 'grunt-contrib-stylus' ) ;
@@ -10,12 +7,21 @@ module.exports = grunt => {
10
7
grunt . loadNpmTasks ( 'grunt-contrib-clean' ) ;
11
8
12
9
grunt . initConfig ( {
13
- clean : [ 'dist' ] ,
10
+ clean : {
11
+ website : [ 'dist/website' ] ,
12
+ extension : [ 'dist/extension' ]
13
+ } ,
14
+
14
15
copy : {
15
- main : {
16
+ website : {
16
17
files : [ {
17
18
expand : true ,
18
- src : [ 'img/**' , 'fonts/**' , 'assets/**' , 'opensearch.xml' ] ,
19
+ cwd : 'img/website' ,
20
+ src : [ '**' ] ,
21
+ dest : 'dist/website/img'
22
+ } , {
23
+ expand : true ,
24
+ src : [ 'fonts/**' , 'opensearch.xml' ] ,
19
25
dest : 'dist/website'
20
26
} , {
21
27
expand : true ,
@@ -29,56 +35,168 @@ module.exports = grunt => {
29
35
] ,
30
36
dest : 'dist/website/css/'
31
37
} ]
38
+ } ,
39
+ extension : {
40
+ files : [ {
41
+ expand : true ,
42
+ flatten : true ,
43
+ src : [ 'manifest.json' , 'html/extension/bg.html' ] ,
44
+ dest : 'dist/extension'
45
+ } , {
46
+ expand : true ,
47
+ cwd : 'img/extension' ,
48
+ src : [ '**' ] ,
49
+ dest : 'dist/extension/img'
50
+ } , {
51
+ expand : true ,
52
+ src : [ 'fonts/**' ] ,
53
+ dest : 'dist/extension'
54
+ } , {
55
+ expand : true ,
56
+ flatten : true ,
57
+ src : [
58
+ 'node_modules/bootstrap/dist/css/bootstrap.min.css' ,
59
+ 'node_modules/codemirror/lib/codemirror.css' ,
60
+ 'node_modules/codemirror/addon/lint/lint.css' ,
61
+ 'css/budicon.css' ,
62
+ 'css/google-roboto-mono.css'
63
+ ] ,
64
+ dest : 'dist/extension/css/'
65
+ } ]
32
66
}
33
67
} ,
68
+
34
69
stylus : {
35
- compile : {
70
+ website : {
71
+ files : {
72
+ 'dist/website/css/index.css' : 'stylus/website/index.styl'
73
+ }
74
+ } ,
75
+ extension : {
36
76
files : {
37
- 'dist/website /css/app .css' : 'stylus/app .styl'
77
+ 'dist/extension /css/index .css' : 'stylus/extension/index .styl'
38
78
}
39
79
}
40
80
} ,
81
+
41
82
pug : {
42
- compile : {
83
+ website : {
43
84
files : {
44
85
'dist/website/index.html' : 'views/website/index.pug' ,
45
86
'dist/website/introduction/index.html' :
46
87
'views/website/introduction.pug'
47
88
}
89
+ } ,
90
+ extension : {
91
+ files : {
92
+ 'dist/extension/index.html' : 'views/extension/index.pug'
93
+ }
48
94
}
49
95
} ,
96
+
50
97
webpack : {
51
- prod : websiteWebpackConfigProd ,
52
- dev : websiteWebpackConfigDev
98
+ websiteProd : require ( './webpack.website-prod.js' ) ,
99
+ websiteDev : require ( './webpack.website-dev.js' ) ,
100
+ extensionProd : require ( './webpack.extension-prod.js' ) ,
101
+ extensionDev : require ( './webpack.extension-dev.js' ) ,
53
102
} ,
103
+
54
104
watch : {
55
- js : {
56
- files : 'src/**' ,
57
- tasks : 'webpack:dev'
105
+ websiteSrc : {
106
+ files : [ 'src/*.js' , 'src/website/**' ] ,
107
+ tasks : 'webpack:websiteDev'
108
+ } ,
109
+ extensionSrc : {
110
+ files : [ 'src/*.js' , 'src/extension/**' ] ,
111
+ tasks : 'webpack:extensionDev'
112
+ } ,
113
+ websiteImg : {
114
+ files : [ 'img/website/**' ] ,
115
+ tasks : 'copy:website'
116
+ } ,
117
+ extensionImg : {
118
+ files : [ 'img/extension/**' ] ,
119
+ tasks : 'copy:extension'
120
+ } ,
121
+ opensearch : {
122
+ files : 'opensearch.xml' ,
123
+ tasks : 'copy:website'
58
124
} ,
59
125
assets : {
60
126
files : [
61
- 'img/**' ,
62
127
'fonts/**' ,
63
- 'assets/**' ,
64
- 'opensearch.xml' ,
65
128
'node_modules/bootstrap/dist/css/bootstrap.min.css' ,
66
129
'node_modules/codemirror/lib/codemirror.css' ,
67
130
'node_modules/codemirror/addon/lint/lint.css' ,
68
131
'css/budicon.css'
69
132
] ,
70
133
tasks : 'copy'
71
134
} ,
72
- views : {
73
- files : [ 'stylus/**' , 'views/**' ] ,
74
- tasks : [ 'build-views' ]
135
+ websiteViews : {
136
+ files : [
137
+ 'stylus/*.styl' ,
138
+ 'stylus/website/**' ,
139
+ 'views/*.pug' ,
140
+ 'views/website/**'
141
+ ] ,
142
+ tasks : [ 'build-website-views' ]
143
+ } ,
144
+ extensionViews : {
145
+ files : [
146
+ 'stylus/*.styl' ,
147
+ 'stylus/extension/**' ,
148
+ 'views/*.pug' ,
149
+ 'views/extension/**'
150
+ ] ,
151
+ tasks : [ 'build-extension-views' ]
75
152
}
76
153
}
77
154
} ) ;
78
155
79
- grunt . registerTask ( 'build-views' , [ 'stylus' , 'pug' ] ) ;
80
- grunt . registerTask ( 'build' , [ 'clean' , 'copy' , 'build-views' , 'webpack:prod' ] ) ;
81
- grunt . registerTask ( 'build-dev' ,
82
- [ 'clean' , 'copy' , 'build-views' , 'webpack:dev' ] ) ;
156
+ grunt . registerTask ( 'build-website-views' , [
157
+ 'stylus:website' ,
158
+ 'pug:website'
159
+ ] ) ;
160
+
161
+ grunt . registerTask ( 'build-extension-views' , [
162
+ 'stylus:extension' ,
163
+ 'pug:extension'
164
+ ] ) ;
165
+
166
+ grunt . registerTask ( 'build-website' , [
167
+ 'clean:website' ,
168
+ 'copy:website' ,
169
+ 'build-website-views' ,
170
+ 'webpack:websiteProd'
171
+ ] ) ;
172
+
173
+ grunt . registerTask ( 'build-website-dev' , [
174
+ 'clean:website' ,
175
+ 'copy:website' ,
176
+ 'build-website-views' ,
177
+ 'webpack:websiteDev'
178
+ ] ) ;
179
+
180
+ grunt . registerTask ( 'build-extension' , [
181
+ 'clean:extension' ,
182
+ 'copy:extension' ,
183
+ 'build-extension-views' ,
184
+ 'webpack:extensionProd'
185
+ ] ) ;
186
+
187
+ grunt . registerTask ( 'build-extension-dev' , [
188
+ 'clean:extension' ,
189
+ 'copy:extension' ,
190
+ 'build-extension-views' ,
191
+ 'webpack:extensionDev'
192
+ ] ) ;
193
+
194
+ grunt . registerTask ( 'build' , [ 'build-website' , 'build-extension' ] ) ;
195
+
196
+ grunt . registerTask ( 'build-dev' , [
197
+ 'build-website-dev' ,
198
+ 'build-extension-dev'
199
+ ] ) ;
200
+
83
201
grunt . registerTask ( 'default' , [ 'build-dev' , 'watch' ] ) ;
84
202
} ;
0 commit comments