build-script.js 1.6 KB

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