1
1
module . exports = function ( grunt ) {
2
2
3
+ var path = require ( 'path' ) ;
4
+
3
5
// Project configuration.
4
6
grunt . initConfig ( {
5
7
pkg : grunt . file . readJSON ( 'package.json' ) ,
@@ -60,40 +62,46 @@ module.exports = function(grunt) {
60
62
copy : {
61
63
main : {
62
64
files : [
63
- { expand : true , cwd : './source/js/' , src : '*' , dest : './public/js/' } ,
64
- { expand : true , cwd : './source/css/' , src : '*.css' , dest : './public/css/' } ,
65
- { expand : true , cwd : './source/images/' , src : [ '*.png' , '*.jpg' , '*.gif' , '*.jpeg' ] , dest : './public/images/' } ,
66
- { expand : true , cwd : './source/images/sample/' , src : [ '*.png' , '*.jpg' , '*.gif' , '*.jpeg' ] , dest : './public/images/sample/' } ,
67
- { expand : true , cwd : './source/fonts/' , src : '*' , dest : './public/fonts/' } ,
68
- { expand : true , cwd : './source/_data/' , src : 'annotations.js' , dest : './public/data/' }
65
+ { expand : true , cwd : paths ( ) . source . js , src : '*' , dest : paths ( ) . public . js } ,
66
+ { expand : true , cwd : paths ( ) . source . css , src : '*.css' , dest : paths ( ) . public . css } ,
67
+ { expand : true , cwd : paths ( ) . source . images , src : [ '**/*.png' , '**/*.jpg' , '**/*.gif' , '**/*.jpeg' ] , dest : paths ( ) . public . images } ,
68
+ { expand : true , cwd : paths ( ) . source . fonts , src : '*' , dest : paths ( ) . public . fonts } ,
69
+ { expand : true , cwd : paths ( ) . source . data , src : 'annotations.js' , dest : paths ( ) . public . data }
69
70
]
70
71
} ,
71
72
css : {
72
73
files : [
73
- { expand : true , cwd : './source/css/' , src : '*.css' , dest : './public/css/' }
74
+ { expand : true , cwd : paths ( ) . source . css , src : '*.css' , dest : paths ( ) . public . css }
75
+ ]
76
+ } ,
77
+ styleguide : {
78
+ files : [
79
+ {
80
+ expand : true , cwd : paths ( ) . source . styleguide , src : [ '*.*' , '**/*.*' ] , dest : paths ( ) . public . styleguide
81
+ }
74
82
]
75
83
}
76
84
} ,
77
85
watch : {
78
86
all : {
79
87
files : [
80
- ' source/ css/ **/*.css',
81
- 'public/ styleguide/ css/*.css',
82
- ' source/_patterns/ **/*.mustache',
83
- ' source/_patterns/ **/*.json',
84
- ' source/_data/ *.json'
88
+ paths ( ) . source . css + ' **/*.css',
89
+ paths ( ) . source . styleguide + ' css/*.css',
90
+ paths ( ) . source . patterns + ' **/*.mustache',
91
+ paths ( ) . source . patterns + ' **/*.json',
92
+ paths ( ) . source . data + ' *.json'
85
93
] ,
86
94
tasks : [ 'default' ]
87
95
} ,
88
96
// scss: {
89
- // files: [' source/ css/ **/*.scss', 'public/ styleguide/ css/*.scss'],
97
+ // files: [paths(). source. css + ' **/*.scss', paths().source. styleguide + ' css/*.scss'],
90
98
// tasks: ['sass', 'copy:css','bsReload:css']
91
99
// },
92
100
patterns : {
93
101
files : [
94
- ' source/_patterns/**/ *.mustache',
95
- ' source/_patterns/**/ *.json',
96
- ' source/_data/ *.json'
102
+ paths ( ) . source . patterns + ' *.mustache',
103
+ paths ( ) . source . patterns + ' *.json',
104
+ paths ( ) . source . data + ' *.json'
97
105
] ,
98
106
tasks : [ 'default' ]
99
107
}
@@ -105,10 +113,10 @@ module.exports = function(grunt) {
105
113
// precision: 8
106
114
// },
107
115
// files: {
108
- // './ source/ css/ style.css': './ source/ css/ style.scss',
109
- // './public/ styleguide/ css/static.css': './public/ styleguide/ css/static.scss',
110
- // './public/ styleguide/ css/styleguide.css': './public/ styleguide/ css/styleguide.scss',
111
- // './public/ styleguide/ css/styleguide-specific.css': './public/ styleguide/ css/styleguide-specific.scss'
116
+ // paths(). source. css + ' style.css': paths(). source. css + ' style.scss',
117
+ // paths().source. styleguide + ' css/static.css': paths().source. styleguide + ' css/static.scss',
118
+ // paths().source. styleguide + ' css/styleguide.css': paths().source. styleguide + ' css/styleguide.scss',
119
+ // paths().source. styleguide + ' css/styleguide-specific.css': paths().source. styleguide + ' css/styleguide-specific.scss'
112
120
// }
113
121
// }
114
122
// },
@@ -118,24 +126,28 @@ module.exports = function(grunt) {
118
126
browserSync : {
119
127
dev : {
120
128
options : {
121
- server : './ public' ,
129
+ server : paths ( ) . public . root ,
122
130
watchTask : true ,
123
131
plugins : [
124
132
{
125
133
module : 'bs-html-injector' ,
126
134
options : {
127
- files : './ public/ index.html'
135
+ files : paths ( ) . public + ' index.html'
128
136
}
129
137
}
130
138
]
131
139
}
132
140
}
133
141
} ,
134
142
bsReload : {
135
- css : './ public/ **/*.css'
143
+ css : paths ( ) . public + ' **/*.css'
136
144
}
137
145
} ) ;
138
146
147
+ function paths ( ) {
148
+ return require ( './config.json' ) . paths ;
149
+ }
150
+
139
151
// load all grunt tasks
140
152
require ( 'matchdep' ) . filterDev ( 'grunt-*' ) . forEach ( grunt . loadNpmTasks ) ;
141
153
@@ -149,8 +161,8 @@ module.exports = function(grunt) {
149
161
grunt . registerTask ( 'travis' , [ 'nodeunit' , 'patternlab' ] ) ;
150
162
151
163
//TODO: this line is more efficient, but you cannot run concurrent watch tasks without another dependency.
152
- //grunt.registerTask('serve', ['patternlab', /*'sass',*/ 'copy:main', 'browserSync', 'watch:patterns', 'watch:scss']);
153
- grunt . registerTask ( 'serve' , [ 'patternlab' , /*'sass',*/ 'copy:main' , 'browserSync' , 'watch:all' ] ) ;
164
+ //grunt.registerTask('serve', ['patternlab', /*'sass',*/ 'copy:main', 'copy:styleguide', ' browserSync', 'watch:patterns', 'watch:scss']);
165
+ grunt . registerTask ( 'serve' , [ 'patternlab' , /*'sass',*/ 'copy:main' , 'copy:styleguide' , ' browserSync', 'watch:all' ] ) ;
154
166
155
167
grunt . registerTask ( 'build' , [ 'nodeunit' , 'concat' ] ) ;
156
168
0 commit comments