build-script.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const rollup = require( 'rollup' ).rollup;
  2. const esbuild = require( 'rollup-plugin-esbuild' ).default;
  3. const path = require( 'path' );
  4. const minify = require( './plugins/minify' ).minify;
  5. const banner = require( './constants/banner' );
  6. const fs = require( 'fs' ).promises;
  7. const zlib = require( 'zlib' );
  8. const name = 'splide';
  9. async function buildScript( compress, type = 'default' ) {
  10. const file = `./dist/js/${ name }${ type !== 'default' ? `-${ type }` : '' }${ compress ? '.min' : '' }.js`;
  11. const bundle = await rollup( {
  12. input: `./src/js/build/${ type }.ts`,
  13. plugins: [
  14. esbuild( { minify: false } ),
  15. compress ? minify() : false,
  16. ],
  17. } );
  18. await bundle.write( {
  19. banner,
  20. file,
  21. format : 'umd',
  22. name : type === 'default' ? 'Splide' : 'SplideRenderer',
  23. sourcemap: compress,
  24. } );
  25. if ( compress && type === 'default' ) {
  26. await fs.readFile( file ).then( content => {
  27. return new Promise( ( resolve, reject ) => {
  28. zlib.gzip( content, ( err, binary ) => {
  29. if ( err ) {
  30. return reject( err );
  31. }
  32. fs.writeFile( `${ file }.gz`, binary ).then( resolve, reject );
  33. } );
  34. } );
  35. } );
  36. }
  37. }
  38. Promise.all( [
  39. buildScript(),
  40. buildScript( true ),
  41. buildScript( true, 'renderer' ),
  42. ] ).catch( console.error );
  43. exports.buildJs = () => buildScript();
  44. exports.buildMin = () => buildScript( true );
  45. exports.buildRenderer = () => buildScript( true, 'renderer' );