1
1
#!/usr/bin/env node
2
- "use strict" ;
3
-
4
- var _extends = Object . assign || function ( target ) { for ( var i = 1 ; i < arguments . length ; i ++ ) { var source = arguments [ i ] ; for ( var key in source ) { if ( Object . prototype . hasOwnProperty . call ( source , key ) ) { target [ key ] = source [ key ] ; } } } return target ; } ;
5
-
6
2
const gulp = require ( "gulp" ) ,
7
- cleanCSS = require ( "gulp-clean-css" ) ,
8
- del = require ( "del" ) ,
9
- fs = require ( "fs" ) ,
10
- handlebars = require ( "handlebars" ) ,
11
- jeditor = require ( "gulp-json-editor" ) ,
12
- jsonSass = require ( "json-sass" ) ,
13
- map = require ( "through2-map" ) ,
14
- rename = require ( "gulp-rename" ) ,
15
- sass = require ( "gulp-sass" ) ,
16
- source = require ( "vinyl-source-stream" ) ,
17
- vinylPaths = require ( "vinyl-paths" ) ,
18
- zip = require ( "gulp-zip" ) ;
3
+ cleanCSS = require ( "gulp-clean-css" ) ,
4
+ del = require ( "del" ) ,
5
+ fs = require ( "fs" ) ,
6
+ handlebars = require ( "handlebars" ) ,
7
+ jeditor = require ( "gulp-json-editor" ) ,
8
+ jsonSass = require ( "json-sass" ) ,
9
+ map = require ( "through2-map" ) ,
10
+ rename = require ( "gulp-rename" ) ,
11
+ sass = require ( "gulp-sass" ) ,
12
+ source = require ( "vinyl-source-stream" ) ,
13
+ vinylPaths = require ( "vinyl-paths" ) ,
14
+ zip = require ( "gulp-zip" ) ;
19
15
20
16
const dirRoot = process . cwd ( ) ;
21
17
const routeConfig = `${ dirRoot } /css-gridish.json` ;
22
18
const config = require ( routeConfig ) ;
23
- const intro = config . paths !== undefined && config . paths . intro !== undefined ? fs . readFileSync ( `${ dirRoot } /${ config . paths . intro } ` , "utf8" ) : "" ;
24
- const route = config . paths !== undefined && config . paths . route !== undefined ? config . paths . route : "css-gridish" ;
19
+ const intro =
20
+ config . paths !== undefined && config . paths . intro !== undefined
21
+ ? fs . readFileSync ( `${ dirRoot } /${ config . paths . intro } ` , "utf8" )
22
+ : "" ;
23
+ const route =
24
+ config . paths !== undefined && config . paths . route !== undefined
25
+ ? config . paths . route
26
+ : "css-gridish" ;
25
27
const dirDest = `${ dirRoot } /${ route } ` ;
26
28
const dirDestCss = `${ dirDest } /\css` ;
27
29
const dirDestDesign = `${ __dirname } /css-gridish-design.json` ;
28
30
const dirDestScss = `${ dirDest } /s\css` ;
29
31
const dirDestSketch = `${ dirDest } /sketch` ;
30
32
const prefix = config . prefix ? config . prefix : "gridish" ;
31
33
32
- const artboard = require ( `${ __dirname } /src/ sketch/artboard.json` ) ;
34
+ const artboard = require ( `${ __dirname } /sketch/artboard.json` ) ;
33
35
34
- const parseUnit = function ( value , width ) {
36
+ const parseUnit = function ( value , width ) {
35
37
let parsed = value ;
36
38
if ( value !== 0 ) {
37
39
if ( value . includes ( "vw" ) ) {
@@ -47,11 +49,11 @@ const parseUnit = function (value, width) {
47
49
return parsed ;
48
50
} ;
49
51
50
- handlebars . registerHelper ( "length" , function ( json ) {
52
+ handlebars . registerHelper ( "length" , function ( json ) {
51
53
return Object . keys ( json ) . length ;
52
54
} ) ;
53
55
54
- handlebars . registerHelper ( "math" , function ( lvalue , operator , rvalue , options ) {
56
+ handlebars . registerHelper ( "math" , function ( lvalue , operator , rvalue , options ) {
55
57
lvalue = parseFloat ( lvalue ) ;
56
58
rvalue = parseFloat ( rvalue ) ;
57
59
@@ -64,61 +66,103 @@ handlebars.registerHelper("math", function (lvalue, operator, rvalue, options) {
64
66
} [ operator ] ;
65
67
} ) ;
66
68
67
- gulp . task ( "clean" , function ( ) {
69
+ gulp . task ( "clean" , function ( ) {
68
70
return del ( [ dirDestCss , dirDestScss , `${ dirDest } /${ prefix } -grid.sketch` ] ) ;
69
71
} ) ;
70
72
71
- gulp . task ( "css" , [ "scssRenameLegacy" ] , function ( ) {
72
- return gulp . src ( `${ dirDestScss } /${ prefix } -grid.s\css` ) . pipe ( sass ( ) . on ( "error" , sass . logError ) ) . pipe ( rename ( `${ prefix } -grid.\css` ) ) . pipe ( gulp . dest ( dirDestCss ) ) . pipe ( cleanCSS ( {
73
- level : 2
74
- } ) ) . pipe ( rename ( `${ prefix } -grid.min.\css` ) ) . pipe ( gulp . dest ( dirDestCss ) ) ;
73
+ gulp . task ( "css" , [ "scssRenameLegacy" ] , function ( ) {
74
+ return gulp
75
+ . src ( `${ dirDestScss } /${ prefix } -grid.s\css` )
76
+ . pipe ( sass ( ) . on ( "error" , sass . logError ) )
77
+ . pipe ( rename ( `${ prefix } -grid.\css` ) )
78
+ . pipe ( gulp . dest ( dirDestCss ) )
79
+ . pipe (
80
+ cleanCSS ( {
81
+ level : 2
82
+ } )
83
+ )
84
+ . pipe ( rename ( `${ prefix } -grid.min.\css` ) )
85
+ . pipe ( gulp . dest ( dirDestCss ) ) ;
75
86
} ) ;
76
87
77
- gulp . task ( "css-legacy" , [ "css" ] , function ( ) {
78
- return gulp . src ( `${ dirDestScss } /${ prefix } -grid-legacy.s\css` ) . pipe ( sass ( ) . on ( "error" , sass . logError ) ) . pipe ( rename ( `${ prefix } -grid-legacy.\css` ) ) . pipe ( gulp . dest ( dirDestCss ) ) . pipe ( cleanCSS ( {
79
- level : 2
80
- } ) ) . pipe ( rename ( `${ prefix } -grid-legacy.min.\css` ) ) . pipe ( gulp . dest ( dirDestCss ) ) ;
88
+ gulp . task ( "css-legacy" , [ "css" ] , function ( ) {
89
+ return gulp
90
+ . src ( `${ dirDestScss } /${ prefix } -grid-legacy.s\css` )
91
+ . pipe ( sass ( ) . on ( "error" , sass . logError ) )
92
+ . pipe ( rename ( `${ prefix } -grid-legacy.\css` ) )
93
+ . pipe ( gulp . dest ( dirDestCss ) )
94
+ . pipe (
95
+ cleanCSS ( {
96
+ level : 2
97
+ } )
98
+ )
99
+ . pipe ( rename ( `${ prefix } -grid-legacy.min.\css` ) )
100
+ . pipe ( gulp . dest ( dirDestCss ) ) ;
81
101
} ) ;
82
102
83
- gulp . task ( "docs" , [ "css-legacy" ] , function ( ) {
84
- return gulp . src ( `${ __dirname } /src/docs/*.hbs` ) . pipe ( map . obj ( chunk => {
85
- var template = handlebars . compile ( chunk . contents . toString ( ) ) ;
86
- chunk . contents = new Buffer ( template ( {
87
- config : _extends ( { } , config , {
88
- classBreakpoints : Object . keys ( config . breakpoints ) . slice ( 0 , - 1 ) ,
89
- intro
103
+ gulp . task ( "docs" , [ "css-legacy" ] , function ( ) {
104
+ return gulp
105
+ . src ( `${ __dirname } /docs/*.hbs` )
106
+ . pipe (
107
+ map . obj ( chunk => {
108
+ var template = handlebars . compile ( chunk . contents . toString ( ) ) ;
109
+ chunk . contents = new Buffer (
110
+ template ( {
111
+ config : {
112
+ ...config ,
113
+ classBreakpoints : Object . keys ( config . breakpoints ) . slice ( 0 , - 1 ) ,
114
+ intro
115
+ }
116
+ } )
117
+ ) ;
118
+ return chunk ;
119
+ } )
120
+ )
121
+ . pipe (
122
+ rename ( path => {
123
+ // a template file of the form AAAA.BBB.hbs produces output file AAAA.BBB
124
+ var dot = path . basename . lastIndexOf ( "." ) ;
125
+ path . extname = path . basename . substring ( dot ) ;
126
+ path . basename = path . basename . substring ( 0 , dot ) ;
90
127
} )
91
- } ) ) ;
92
- return chunk ;
93
- } ) ) . pipe ( rename ( path => {
94
- // a template file of the form AAAA.BBB.hbs produces output file AAAA.BBB
95
- var dot = path . basename . lastIndexOf ( "." ) ;
96
- path . extname = path . basename . substring ( dot ) ;
97
- path . basename = path . basename . substring ( 0 , dot ) ;
98
- } ) ) . pipe ( gulp . dest ( dirDest ) ) ;
128
+ )
129
+ . pipe ( gulp . dest ( dirDest ) ) ;
99
130
} ) ;
100
131
101
- gulp . task ( "scss" , [ "valuesClean" ] , function ( ) {
102
- return gulp . src ( `${ __dirname } /src/ scss/**/*.s\css` ) . pipe ( gulp . dest ( dirDestScss ) ) ;
132
+ gulp . task ( "scss" , [ "valuesClean" ] , function ( ) {
133
+ return gulp . src ( `${ __dirname } /scss/**/*.s\css` ) . pipe ( gulp . dest ( dirDestScss ) ) ;
103
134
} ) ;
104
135
105
- gulp . task ( "scssRename" , [ "scss" ] , function ( ) {
106
- return gulp . src ( `${ dirDestScss } /gridish-grid.s\css` ) . pipe ( vinylPaths ( del ) ) . pipe ( rename ( `${ prefix } -grid.s\css` ) ) . pipe ( gulp . dest ( dirDestScss ) ) ;
136
+ gulp . task ( "scssRename" , [ "scss" ] , function ( ) {
137
+ return gulp
138
+ . src ( `${ dirDestScss } /gridish-grid.s\css` )
139
+ . pipe ( vinylPaths ( del ) )
140
+ . pipe ( rename ( `${ prefix } -grid.s\css` ) )
141
+ . pipe ( gulp . dest ( dirDestScss ) ) ;
107
142
} ) ;
108
143
109
- gulp . task ( "scssRenameLegacy" , [ "scssRename" ] , function ( ) {
110
- return gulp . src ( `${ dirDestScss } /gridish-grid-legacy.s\css` ) . pipe ( vinylPaths ( del ) ) . pipe ( rename ( `${ prefix } -grid-legacy.s\css` ) ) . pipe ( gulp . dest ( dirDestScss ) ) ;
144
+ gulp . task ( "scssRenameLegacy" , [ "scssRename" ] , function ( ) {
145
+ return gulp
146
+ . src ( `${ dirDestScss } /gridish-grid-legacy.s\css` )
147
+ . pipe ( vinylPaths ( del ) )
148
+ . pipe ( rename ( `${ prefix } -grid-legacy.s\css` ) )
149
+ . pipe ( gulp . dest ( dirDestScss ) ) ;
111
150
} ) ;
112
151
113
- gulp . task ( "sketchClean" , [ "sketchZip" ] , function ( ) {
152
+ gulp . task ( "sketchClean" , [ "sketchZip" ] , function ( ) {
114
153
return del ( [ dirDestSketch ] ) ;
115
154
} ) ;
116
155
117
- gulp . task ( "sketchFiles" , [ "docs" ] , function ( ) {
118
- return gulp . src ( [ `${ __dirname } /src/sketch/files/**/*` , `!${ __dirname } /src/sketch/files/pages/BC333699-815E-4E1B-9816-9836EDA5B291.json` ] ) . pipe ( gulp . dest ( dirDestSketch ) ) ;
156
+ gulp . task ( "sketchFiles" , [ "docs" ] , function ( ) {
157
+ return gulp
158
+ . src ( [
159
+ `${ __dirname } /sketch/files/**/*` ,
160
+ `!${ __dirname } /sketch/files/pages/BC333699-815E-4E1B-9816-9836EDA5B291.json`
161
+ ] )
162
+ . pipe ( gulp . dest ( dirDestSketch ) ) ;
119
163
} ) ;
120
164
121
- gulp . task ( "sketchPage" , [ "sketchFiles" ] , function ( ) {
165
+ gulp . task ( "sketchPage" , [ "sketchFiles" ] , function ( ) {
122
166
// Add breakpoint values to extra artboards
123
167
const originalBreakpoints = config . breakpoints ;
124
168
let allBreakpoints = originalBreakpoints ;
@@ -128,27 +172,34 @@ gulp.task("sketchPage", ["sketchFiles"], function () {
128
172
let found = false ;
129
173
for ( let j = 0 ; j < Object . values ( originalBreakpoints ) . length ; j ++ ) {
130
174
// should catch at max
131
- if ( Object . values ( originalBreakpoints ) [ j + 1 ] !== undefined && Object . values ( originalBreakpoints ) [ j + 1 ] . breakpoint > value && ! found ) {
132
- allBreakpoints [ name ] = _extends ( { } , Object . values ( originalBreakpoints ) [ j ] , {
175
+ if (
176
+ Object . values ( originalBreakpoints ) [ j + 1 ] !== undefined &&
177
+ Object . values ( originalBreakpoints ) [ j + 1 ] . breakpoint > value &&
178
+ ! found
179
+ ) {
180
+ allBreakpoints [ name ] = {
181
+ ...Object . values ( originalBreakpoints ) [ j ] ,
133
182
breakpoint : value
134
- } ) ;
183
+ } ;
135
184
found = true ;
136
185
} else if ( Object . values ( originalBreakpoints ) [ i + 1 ] === undefined ) {
137
- allBreakpoints [ name ] = _extends ( { } , Object . values ( originalBreakpoints ) [ i ] , {
186
+ allBreakpoints [ name ] = {
187
+ ...Object . values ( originalBreakpoints ) [ i ] ,
138
188
breakpoint : value
139
- } ) ;
189
+ } ;
140
190
}
141
191
}
142
192
}
143
193
144
194
// Sort all breakpoints by size
145
195
let sorted = Object . values ( allBreakpoints ) ;
146
196
for ( let i = 0 ; i < sorted . length ; i ++ ) {
147
- sorted [ i ] = _extends ( { } , sorted [ i ] , {
197
+ sorted [ i ] = {
198
+ ...sorted [ i ] ,
148
199
name : Object . keys ( allBreakpoints ) [ i ]
149
- } ) ;
200
+ } ;
150
201
}
151
- sorted = sorted . sort ( function ( a , b ) {
202
+ sorted = sorted . sort ( function ( a , b ) {
152
203
return a . breakpoint - b . breakpoint ;
153
204
} ) ;
154
205
@@ -164,52 +215,82 @@ gulp.task("sketchPage", ["sketchFiles"], function () {
164
215
const gridWidth = width - margin * 2 ;
165
216
const gutterWidth = gutter ;
166
217
167
- layers . push ( _extends ( { } , artboard , {
218
+ layers . push ( {
219
+ ...artboard ,
168
220
name : `${ values . name } -${ width } px-${ values . columns } ` ,
169
221
do_objectID : artboard . do_objectID . slice ( 0 , - 1 ) + i ,
170
- frame : _extends ( { } , artboard . frame , {
222
+ frame : {
223
+ ...artboard . frame ,
171
224
width,
172
225
x
173
- } ) ,
174
- grid : _extends ( { } , artboard . grid , {
226
+ } ,
227
+ grid : {
228
+ ...artboard . grid ,
175
229
gridSize : config . rowHeight * config . rem
176
- } ) ,
177
- layout : _extends ( { } , artboard . layout , {
178
- columnWidth : ( gridWidth - gutterWidth * values . columns ) / values . columns ,
230
+ } ,
231
+ layout : {
232
+ ...artboard . layout ,
233
+ columnWidth :
234
+ ( gridWidth - gutterWidth * values . columns ) / values . columns ,
179
235
gutterWidth,
180
236
horizontalOffset : margin ,
181
237
numberOfColumns : values . columns ,
182
238
totalWidth : gridWidth
183
- } )
184
- } ) ) ;
239
+ }
240
+ } ) ;
185
241
}
186
- return gulp . src ( `${ __dirname } /src/sketch/files/pages/BC333699-815E-4E1B-9816-9836EDA5B291.json` ) . pipe ( jeditor ( {
187
- layers
188
- } ) ) . pipe ( gulp . dest ( `${ dirDestSketch } /pages` ) ) ;
242
+ return gulp
243
+ . src (
244
+ `${ __dirname } /sketch/files/pages/BC333699-815E-4E1B-9816-9836EDA5B291.json`
245
+ )
246
+ . pipe (
247
+ jeditor ( {
248
+ layers
249
+ } )
250
+ )
251
+ . pipe ( gulp . dest ( `${ dirDestSketch } /pages` ) ) ;
189
252
} ) ;
190
253
191
- gulp . task ( "sketchZip" , [ "sketchPage" ] , function ( ) {
192
- return gulp . src ( `${ dirDestSketch } /**/*` ) . pipe ( zip ( `${ prefix } -grid.zip` ) ) . pipe ( rename ( `${ prefix } -grid.sketch` ) ) . pipe ( vinylPaths ( del ) ) . pipe ( gulp . dest ( dirDest ) ) ;
254
+ gulp . task ( "sketchZip" , [ "sketchPage" ] , function ( ) {
255
+ return gulp
256
+ . src ( `${ dirDestSketch } /**/*` )
257
+ . pipe ( zip ( `${ prefix } -grid.zip` ) )
258
+ . pipe ( rename ( `${ prefix } -grid.sketch` ) )
259
+ . pipe ( vinylPaths ( del ) )
260
+ . pipe ( gulp . dest ( dirDest ) ) ;
193
261
} ) ;
194
262
195
- gulp . task ( "values" , [ "valuesPrep" ] , function ( ) {
196
- return fs . createReadStream ( dirDestDesign ) . pipe ( jsonSass ( {
197
- prefix : "$grid-values: "
198
- } ) ) . pipe ( source ( routeConfig ) ) . pipe ( rename ( "_values.scss" ) ) . pipe ( gulp . dest ( dirDestScss ) ) ;
263
+ gulp . task ( "values" , [ "valuesPrep" ] , function ( ) {
264
+ return fs
265
+ . createReadStream ( dirDestDesign )
266
+ . pipe (
267
+ jsonSass ( {
268
+ prefix : "$grid-values: "
269
+ } )
270
+ )
271
+ . pipe ( source ( routeConfig ) )
272
+ . pipe ( rename ( "_values.scss" ) )
273
+ . pipe ( gulp . dest ( dirDestScss ) ) ;
199
274
} ) ;
200
275
201
- gulp . task ( "valuesClean" , [ "values" ] , function ( ) {
276
+ gulp . task ( "valuesClean" , [ "values" ] , function ( ) {
202
277
return fs . unlinkSync ( dirDestDesign ) ;
203
278
} ) ;
204
279
205
- gulp . task ( "valuesPrep" , [ "clean" ] , function ( ) {
206
- return fs . writeFileSync ( dirDestDesign , JSON . stringify ( _extends ( { } , config , {
207
- paths : null
208
- } ) ) ) ;
280
+ gulp . task ( "valuesPrep" , [ "clean" ] , function ( ) {
281
+ return fs . writeFileSync (
282
+ dirDestDesign ,
283
+ JSON . stringify ( {
284
+ ...config ,
285
+ paths : null
286
+ } )
287
+ ) ;
209
288
} ) ;
210
289
211
- gulp . task ( "default" , [ "sketchClean" ] , function ( ) {
212
- console . log ( `CSS Gridish finished building your ${ prefix } grid in ${ dirDest } ! 🏁` ) ;
290
+ gulp . task ( "default" , [ "sketchClean" ] , function ( ) {
291
+ console . log (
292
+ `CSS Gridish finished building your ${ prefix } grid in ${ dirDest } ! 🏁`
293
+ ) ;
213
294
} ) ;
214
295
215
296
gulp . start ( "default" ) ;
0 commit comments