| 26 | return { |
| 27 | name: 'minify-plugin', |
| 28 | async writeBundle(outputOptions, bundle) { |
| 29 | for (const file of Object.values(bundle)) { |
| 30 | if ( |
| 31 | file.type === 'asset' && |
| 32 | (file.fileName.endsWith('.cjs.map') || file.fileName.endsWith('.css')) |
| 33 | ) { |
| 34 | const isCSS = file.fileName.endsWith('.css'); |
| 35 | const inputFilePath = resolve( |
| 36 | outputOptions.dir!, |
| 37 | file.fileName, |
| 38 | ).replace(/\.map$/, ''); |
| 39 | const baseFileName = file.fileName.replace( |
| 40 | /(\.cjs|\.css)(\.map)?$/, |
| 41 | '', |
| 42 | ); |
| 43 | const outputFilePath = resolve(outputOptions.dir!, baseFileName); |
| 44 | // console.log(outputFilePath, 'minifying', file.fileName); |
| 45 | if (isCSS) { |
| 46 | await buildFile({ |
| 47 | input: inputFilePath, |
| 48 | output: `${outputFilePath}.min.css`, |
| 49 | minify: true, |
| 50 | isCss: true, |
| 51 | outDir, |
| 52 | }); |
| 53 | } else { |
| 54 | const umdDir = resolve(dirname(outputOptions.dir!), 'umd'); |
| 55 | if (!existsSync(umdDir)) { |
| 56 | mkdirSync(umdDir); |
| 57 | } |
| 58 | const outUmd = `${outputFilePath}.umd.cjs`; |
| 59 | await buildFile({ |
| 60 | name, |
| 61 | input: inputFilePath, |
| 62 | output: outUmd, |
| 63 | minify: false, |
| 64 | isCss: false, |
| 65 | outDir, |
| 66 | }); |
| 67 | // Workaround because jsDelivr does not use correct MIME types for .umd.cjs. |
| 68 | // More info: https://github.com/jsdelivr/jsdelivr/issues/18584 https://github.com/rrweb-io/rrweb/pull/1704 |
| 69 | copyFileSync(outUmd, resolve(umdDir, `${baseFileName}.js`)); |
| 70 | const outUmdMin = `${outputFilePath}.umd.min.cjs`; |
| 71 | await buildFile({ |
| 72 | name, |
| 73 | input: inputFilePath, |
| 74 | output: outUmdMin, |
| 75 | minify: true, |
| 76 | isCss: false, |
| 77 | outDir, |
| 78 | }); |
| 79 | copyFileSync(outUmdMin, resolve(umdDir, `${baseFileName}.min.js`)); |
| 80 | } |
| 81 | } |
| 82 | } |
| 83 | }, |
| 84 | }; |
| 85 | } |