UNPKG

flickity

Version:

Touch, responsive, flickable carousels

42 lines (35 loc) 1.32 kB
const fs = require('fs'); const { execSync } = require('child_process'); const { minify } = require('terser'); const indexPath = 'js/index.js'; const distPath = 'dist/flickity.pkgd.js'; const distMinPath = 'dist/flickity.pkgd.min.js'; let indexContent = fs.readFileSync( `./${indexPath}`, 'utf8' ); // get file paths from index.js let jsPaths = indexContent.match( /require\('([.\-/\w]+)'\)/gi ) .map( ( path ) => path.replace( "require('.", 'js' ).replace( "')", '.js' ) ); let paths = [ 'node_modules/jquery-bridget/jquery-bridget.js', 'node_modules/ev-emitter/ev-emitter.js', 'node_modules/get-size/get-size.js', 'node_modules/fizzy-ui-utils/utils.js', 'node_modules/unidragger/unidragger.js', 'node_modules/imagesloaded/imagesloaded.js', 'js/cell.js', 'js/slide.js', 'js/animate.js', ...jsPaths, ]; // concatenate files execSync(`cat ${paths.join(' ')} > ${distPath}`); // add banner let banner = indexContent.split(' */')[0] + ' */\n\n'; banner = banner.replace( 'Flickity', 'Flickity PACKAGED' ); let distJsContent = fs.readFileSync( distPath, 'utf8' ); distJsContent = banner + distJsContent; fs.writeFileSync( distPath, distJsContent ); // minify ( async function() { let { code } = await minify( distJsContent, { mangle: true } ); fs.writeFileSync( distMinPath, code ); } )();