import { writeFileSync } from 'fs'; import { resolve } from 'path'; import { Builder } from './builder'; import { upload } from './builder/plugins/upload'; type UploaderFunc = ( file: string, name: string, ext: string, ) => Promise; export class Publisher { constructor(opt: { uploader: UploaderFunc }) { this.uploader = opt.uploader; } uploader: UploaderFunc; publishToLocalFile = async (name: string) => { const builder = new Builder(name, { buildMode: true }); await builder.start(); const css = await upload( builder.styles.css.map((ele) => ele.code).join(''), name, 'css', ); const js = await upload(builder.results.main, name, 'js'); writeFileSync( resolve(builder.path, './url.ts'), `export default { main: '${js}', deps: [ '${css}', ], }; `, ); }; }