11#!/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-
62const 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" ) ;
1915
2016const dirRoot = process . cwd ( ) ;
2117const routeConfig = `${ dirRoot } /css-gridish.json` ;
2218const 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" ;
2527const dirDest = `${ dirRoot } /${ route } ` ;
2628const dirDestCss = `${ dirDest } /\css` ;
2729const dirDestDesign = `${ __dirname } /css-gridish-design.json` ;
2830const dirDestScss = `${ dirDest } /s\css` ;
2931const dirDestSketch = `${ dirDest } /sketch` ;
3032const prefix = config . prefix ? config . prefix : "gridish" ;
3133
32- const artboard = require ( `${ __dirname } /src/ sketch/artboard.json` ) ;
34+ const artboard = require ( `${ __dirname } /sketch/artboard.json` ) ;
3335
34- const parseUnit = function ( value , width ) {
36+ const parseUnit = function ( value , width ) {
3537 let parsed = value ;
3638 if ( value !== 0 ) {
3739 if ( value . includes ( "vw" ) ) {
@@ -47,11 +49,11 @@ const parseUnit = function (value, width) {
4749 return parsed ;
4850} ;
4951
50- handlebars . registerHelper ( "length" , function ( json ) {
52+ handlebars . registerHelper ( "length" , function ( json ) {
5153 return Object . keys ( json ) . length ;
5254} ) ;
5355
54- handlebars . registerHelper ( "math" , function ( lvalue , operator , rvalue , options ) {
56+ handlebars . registerHelper ( "math" , function ( lvalue , operator , rvalue , options ) {
5557 lvalue = parseFloat ( lvalue ) ;
5658 rvalue = parseFloat ( rvalue ) ;
5759
@@ -64,61 +66,103 @@ handlebars.registerHelper("math", function (lvalue, operator, rvalue, options) {
6466 } [ operator ] ;
6567} ) ;
6668
67- gulp . task ( "clean" , function ( ) {
69+ gulp . task ( "clean" , function ( ) {
6870 return del ( [ dirDestCss , dirDestScss , `${ dirDest } /${ prefix } -grid.sketch` ] ) ;
6971} ) ;
7072
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 ) ) ;
7586} ) ;
7687
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 ) ) ;
81101} ) ;
82102
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 ) ;
90127 } )
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 ) ) ;
99130} ) ;
100131
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 ) ) ;
103134} ) ;
104135
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 ) ) ;
107142} ) ;
108143
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 ) ) ;
111150} ) ;
112151
113- gulp . task ( "sketchClean" , [ "sketchZip" ] , function ( ) {
152+ gulp . task ( "sketchClean" , [ "sketchZip" ] , function ( ) {
114153 return del ( [ dirDestSketch ] ) ;
115154} ) ;
116155
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 ) ) ;
119163} ) ;
120164
121- gulp . task ( "sketchPage" , [ "sketchFiles" ] , function ( ) {
165+ gulp . task ( "sketchPage" , [ "sketchFiles" ] , function ( ) {
122166 // Add breakpoint values to extra artboards
123167 const originalBreakpoints = config . breakpoints ;
124168 let allBreakpoints = originalBreakpoints ;
@@ -128,27 +172,34 @@ gulp.task("sketchPage", ["sketchFiles"], function () {
128172 let found = false ;
129173 for ( let j = 0 ; j < Object . values ( originalBreakpoints ) . length ; j ++ ) {
130174 // 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 ] ,
133182 breakpoint : value
134- } ) ;
183+ } ;
135184 found = true ;
136185 } else if ( Object . values ( originalBreakpoints ) [ i + 1 ] === undefined ) {
137- allBreakpoints [ name ] = _extends ( { } , Object . values ( originalBreakpoints ) [ i ] , {
186+ allBreakpoints [ name ] = {
187+ ...Object . values ( originalBreakpoints ) [ i ] ,
138188 breakpoint : value
139- } ) ;
189+ } ;
140190 }
141191 }
142192 }
143193
144194 // Sort all breakpoints by size
145195 let sorted = Object . values ( allBreakpoints ) ;
146196 for ( let i = 0 ; i < sorted . length ; i ++ ) {
147- sorted [ i ] = _extends ( { } , sorted [ i ] , {
197+ sorted [ i ] = {
198+ ...sorted [ i ] ,
148199 name : Object . keys ( allBreakpoints ) [ i ]
149- } ) ;
200+ } ;
150201 }
151- sorted = sorted . sort ( function ( a , b ) {
202+ sorted = sorted . sort ( function ( a , b ) {
152203 return a . breakpoint - b . breakpoint ;
153204 } ) ;
154205
@@ -164,52 +215,82 @@ gulp.task("sketchPage", ["sketchFiles"], function () {
164215 const gridWidth = width - margin * 2 ;
165216 const gutterWidth = gutter ;
166217
167- layers . push ( _extends ( { } , artboard , {
218+ layers . push ( {
219+ ...artboard ,
168220 name : `${ values . name } -${ width } px-${ values . columns } ` ,
169221 do_objectID : artboard . do_objectID . slice ( 0 , - 1 ) + i ,
170- frame : _extends ( { } , artboard . frame , {
222+ frame : {
223+ ...artboard . frame ,
171224 width,
172225 x
173- } ) ,
174- grid : _extends ( { } , artboard . grid , {
226+ } ,
227+ grid : {
228+ ...artboard . grid ,
175229 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 ,
179235 gutterWidth,
180236 horizontalOffset : margin ,
181237 numberOfColumns : values . columns ,
182238 totalWidth : gridWidth
183- } )
184- } ) ) ;
239+ }
240+ } ) ;
185241 }
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` ) ) ;
189252} ) ;
190253
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 ) ) ;
193261} ) ;
194262
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 ) ) ;
199274} ) ;
200275
201- gulp . task ( "valuesClean" , [ "values" ] , function ( ) {
276+ gulp . task ( "valuesClean" , [ "values" ] , function ( ) {
202277 return fs . unlinkSync ( dirDestDesign ) ;
203278} ) ;
204279
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+ ) ;
209288} ) ;
210289
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+ ) ;
213294} ) ;
214295
215296gulp . start ( "default" ) ;
0 commit comments