66
77const fs = require ( 'fs' ) ;
88const gracefulFs = require ( 'graceful-fs' ) ;
9+
910// This is needed at least on Windows to prevent the `EMFILE: too many open files` error
1011// https://github.com/isaacs/node-graceful-fs#global-patching
1112gracefulFs . gracefulify ( fs ) ;
@@ -268,7 +269,7 @@ function withPreserveLocale(preserveLocale) {
268269}
269270
270271// This function builds the static/css folder for all the Sass files.
271- function buildCSS ( ) {
272+ async function buildCSS ( ) {
272273 console . log ( '[sass] static/css started' ) ;
273274 const labelForBuild = '[sass] static/css finished' ;
274275 console . time ( labelForBuild ) ;
@@ -277,88 +278,70 @@ function buildCSS() {
277278 const dest = path . join ( __dirname , 'build/static/css/styles.css' ) ;
278279
279280 const sassOpts = {
280- file : src ,
281- outFile : dest ,
282281 outputStyle :
283282 process . env . NODE_ENV !== 'development' ? 'compressed' : 'expanded'
284283 } ;
285284
286- gracefulFs . mkdir (
287- path . join ( __dirname , 'build/static/css' ) ,
288- { recursive : true } ,
289- ( err ) => {
290- if ( err ) {
291- throw err ;
292- }
293-
294- sass . render ( sassOpts , ( error , result ) => {
295- if ( error ) {
296- throw error ;
297- }
285+ const graceFulFsPromise = gracefulFs . promises ;
298286
299- postcss ( [ autoprefixer ] )
300- . process ( result . css , { from : src } )
301- . then ( ( res ) => {
302- res . warnings ( ) . forEach ( ( warn ) => {
303- console . warn ( warn . toString ( ) ) ;
304- } ) ;
287+ await graceFulFsPromise . mkdir ( path . join ( __dirname , 'build/static/css' ) , {
288+ recursive : true
289+ } ) ;
305290
306- gracefulFs . writeFile ( dest , res . css , ( err ) => {
307- if ( err ) {
308- throw err ;
309- }
291+ const result = await sass . compileAsync ( src , sassOpts ) ;
310292
311- console . timeEnd ( labelForBuild ) ;
312- } ) ;
313- } ) ;
293+ postcss ( [ autoprefixer ] )
294+ . process ( result . css , { from : src } )
295+ . then ( async ( res ) => {
296+ res . warnings ( ) . forEach ( ( warn ) => {
297+ console . warn ( warn . toString ( ) ) ;
314298 } ) ;
315- }
316- ) ;
299+
300+ await graceFulFsPromise . writeFile ( dest , res . css ) ;
301+ console . timeEnd ( labelForBuild ) ;
302+ } ) ;
317303}
318304
319305// This function copies the rest of the static assets to their subfolder in the
320306// build directory.
321- function copyStatic ( ) {
307+ async function copyStatic ( ) {
322308 console . log ( '[ncp] build/static started' ) ;
323309 const labelForBuild = '[ncp] build/static finished' ;
324310 console . time ( labelForBuild ) ;
325- gracefulFs . mkdir (
311+
312+ const graceFulFsPromise = gracefulFs . promises ;
313+
314+ await graceFulFsPromise . mkdir ( path . join ( __dirname , 'build/static' ) , {
315+ recursive : true
316+ } ) ;
317+
318+ ncp (
319+ path . join ( __dirname , 'static' ) ,
326320 path . join ( __dirname , 'build/static' ) ,
327- { recursive : true } ,
328- ( err ) => {
329- if ( err ) {
330- throw err ;
321+ ( error ) => {
322+ if ( error ) {
323+ return console . error ( error ) ;
331324 }
332325
333326 ncp (
334- path . join ( __dirname , 'static ' ) ,
335- path . join ( __dirname , 'build/static' ) ,
327+ path . join ( __dirname , 'node_modules/jquery/dist/jquery.min.js ' ) ,
328+ path . join ( __dirname , 'build/static/js/jquery.min.js ' ) ,
336329 ( error ) => {
337330 if ( error ) {
338331 return console . error ( error ) ;
339332 }
340333
341334 ncp (
342- path . join ( __dirname , 'node_modules/jquery/dist/jquery.min.js' ) ,
343- path . join ( __dirname , 'build/static/js/jquery.min.js' ) ,
335+ path . join (
336+ __dirname ,
337+ 'node_modules/jquery.fancytable/dist/fancyTable.min.js'
338+ ) ,
339+ path . join ( __dirname , 'build/static/js/fancyTable.min.js' ) ,
344340 ( error ) => {
345341 if ( error ) {
346342 return console . error ( error ) ;
347343 }
348-
349- ncp (
350- path . join (
351- __dirname ,
352- 'node_modules/jquery.fancytable/dist/fancyTable.min.js'
353- ) ,
354- path . join ( __dirname , 'build/static/js/fancyTable.min.js' ) ,
355- ( error ) => {
356- if ( error ) {
357- return console . error ( error ) ;
358- }
359- console . timeEnd ( labelForBuild ) ;
360- }
361- ) ;
344+ console . timeEnd ( labelForBuild ) ;
362345 }
363346 ) ;
364347 }
@@ -398,25 +381,24 @@ function getSource(callback) {
398381// name. It brings together all build steps and dependencies and executes them.
399382function fullBuild ( opts ) {
400383 const { selectedLocales, preserveLocale } = opts ;
401- getSource ( ( err , source ) => {
384+ getSource ( async ( err , source ) => {
402385 if ( err ) {
403386 throw err ;
404387 }
405388
406- // Executes the build cycle for every locale.
407- gracefulFs . readdir ( path . join ( __dirname , 'locale' ) , ( e , locales ) => {
408- if ( e ) {
409- throw e ;
410- }
411- const filteredLocales = locales . filter (
412- ( file ) =>
413- junk . not ( file ) &&
414- ( selectedLocales ? selectedLocales . includes ( file ) : true )
415- ) ;
416- const localesData = generateLocalesData ( filteredLocales ) ;
417- filteredLocales . forEach ( ( locale ) => {
418- buildLocale ( source , locale , { preserveLocale, localesData } ) ;
419- } ) ;
389+ const graceFulFsPromise = gracefulFs . promises ;
390+ const locales = await graceFulFsPromise . readdir (
391+ path . join ( __dirname , 'locale' )
392+ ) ;
393+
394+ const filteredLocales = locales . filter (
395+ ( file ) =>
396+ junk . not ( file ) &&
397+ ( selectedLocales ? selectedLocales . includes ( file ) : true )
398+ ) ;
399+ const localesData = generateLocalesData ( filteredLocales ) ;
400+ filteredLocales . forEach ( ( locale ) => {
401+ buildLocale ( source , locale , { preserveLocale, localesData } ) ;
420402 } ) ;
421403 } ) ;
422404}
0 commit comments