build-script.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. async function buildScript( compress ) {
  12. const file = `./dist/js/${ name }${ compress ? '.min' : '' }.js`;
  13. const bundle = await 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. } );
  25. await bundle.write( {
  26. banner,
  27. file,
  28. format : 'umd',
  29. name : 'Splide',
  30. sourcemap: ! compress,
  31. } );
  32. if ( compress ) {
  33. await fs.readFile( file ).then( content => {
  34. return new Promise( ( resolve, reject ) => {
  35. zlib.gzip( content, ( err, binary ) => {
  36. if ( err ) {
  37. return reject( err );
  38. }
  39. fs.writeFile( `${ file }.gz`, binary ).then( resolve, reject );
  40. } );
  41. } );
  42. } );
  43. }
  44. }
  45. Promise.all( [ buildScript(), buildScript( true ) ] ).catch( e => console.error( e ) );
  46. exports.buildJs = () => buildScript();
  47. exports.buildMin = () => buildScript( true );