build-script.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { rollup } from 'rollup';
  2. import esbuild from 'rollup-plugin-esbuild';
  3. import resolve from '@rollup/plugin-node-resolve';
  4. import { minify } from './plugins/minify.js';
  5. import { BANNER } from './constants/banner.js';
  6. import fs from 'fs/promises';
  7. import * as zlib from '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. resolve(),
  15. esbuild( { minify: false } ),
  16. compress ? minify() : false,
  17. ],
  18. } );
  19. await bundle.write( {
  20. file,
  21. banner : BANNER,
  22. format : 'umd',
  23. name : type === 'default' ? 'Splide' : 'SplideRenderer',
  24. sourcemap: compress,
  25. } );
  26. if ( compress && type === 'default' ) {
  27. await fs.readFile( file ).then( content => {
  28. return new Promise( ( resolve, reject ) => {
  29. zlib.gzip( content, ( err, binary ) => {
  30. if ( err ) {
  31. return reject( err );
  32. }
  33. fs.writeFile( `${ file }.gz`, binary ).then( resolve, reject );
  34. } );
  35. } );
  36. } );
  37. }
  38. }
  39. Promise.all( [
  40. buildScript(),
  41. buildScript( true ),
  42. buildScript( true, 'renderer' ),
  43. ] ).catch( console.error );
  44. export const buildJs = () => buildScript();
  45. export const buildMin = () => buildScript( true );
  46. export const buildRenderer = () => buildScript( 'renderer' );