build-types.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. const { default: dts } = require( 'rollup-plugin-dts' );
  2. const { rollup } = require( 'rollup' );
  3. const { promises: fs } = require( 'fs' );
  4. const path = require( 'path' );
  5. const util = require( 'util' );
  6. const exec = util.promisify( require( 'child_process' ).exec );
  7. const dir = './dist/types';
  8. async function clean() {
  9. const files = await fs.readdir( dir );
  10. await Promise.all( files.map( file => {
  11. if ( file !== 'index.d.ts' ) {
  12. return fs.rm( path.join( dir, file ), { recursive: true, force: true } );
  13. }
  14. } ) );
  15. }
  16. async function emit() {
  17. await exec( 'tsc --emitDeclarationOnly' );
  18. }
  19. async function bundle() {
  20. const file = path.join( dir, 'index.d.ts' );
  21. const bundle = await rollup( {
  22. input : file,
  23. plugins: [ dts( { respectExternal: true } ) ],
  24. } );
  25. await bundle.write( { file } );
  26. }
  27. async function build() {
  28. await clean();
  29. await emit();
  30. await bundle();
  31. await clean();
  32. }
  33. build().catch( e => console.error( e ) );