1- const websiteWebpackConfigDev = require ( './webpack.website-dev.js' ) ;
2- const websiteWebpackConfigProd = require ( './webpack.website-prod.js' ) ;
3-
41module . exports = grunt => {
52 grunt . loadNpmTasks ( 'grunt-contrib-copy' ) ;
63 grunt . loadNpmTasks ( 'grunt-contrib-stylus' ) ;
@@ -10,12 +7,21 @@ module.exports = grunt => {
107 grunt . loadNpmTasks ( 'grunt-contrib-clean' ) ;
118
129 grunt . initConfig ( {
13- clean : [ 'dist' ] ,
10+ clean : {
11+ website : [ 'dist/website' ] ,
12+ extension : [ 'dist/extension' ]
13+ } ,
14+
1415 copy : {
15- main : {
16+ website : {
1617 files : [ {
1718 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' ] ,
1925 dest : 'dist/website'
2026 } , {
2127 expand : true ,
@@ -29,56 +35,168 @@ module.exports = grunt => {
2935 ] ,
3036 dest : 'dist/website/css/'
3137 } ]
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+ } ]
3266 }
3367 } ,
68+
3469 stylus : {
35- compile : {
70+ website : {
71+ files : {
72+ 'dist/website/css/index.css' : 'stylus/website/index.styl'
73+ }
74+ } ,
75+ extension : {
3676 files : {
37- 'dist/website /css/app .css' : 'stylus/app .styl'
77+ 'dist/extension /css/index .css' : 'stylus/extension/index .styl'
3878 }
3979 }
4080 } ,
81+
4182 pug : {
42- compile : {
83+ website : {
4384 files : {
4485 'dist/website/index.html' : 'views/website/index.pug' ,
4586 'dist/website/introduction/index.html' :
4687 'views/website/introduction.pug'
4788 }
89+ } ,
90+ extension : {
91+ files : {
92+ 'dist/extension/index.html' : 'views/extension/index.pug'
93+ }
4894 }
4995 } ,
96+
5097 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' ) ,
53102 } ,
103+
54104 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'
58124 } ,
59125 assets : {
60126 files : [
61- 'img/**' ,
62127 'fonts/**' ,
63- 'assets/**' ,
64- 'opensearch.xml' ,
65128 'node_modules/bootstrap/dist/css/bootstrap.min.css' ,
66129 'node_modules/codemirror/lib/codemirror.css' ,
67130 'node_modules/codemirror/addon/lint/lint.css' ,
68131 'css/budicon.css'
69132 ] ,
70133 tasks : 'copy'
71134 } ,
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' ]
75152 }
76153 }
77154 } ) ;
78155
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+
83201 grunt . registerTask ( 'default' , [ 'build-dev' , 'watch' ] ) ;
84202} ;
0 commit comments