Skip to content

Commit 83e9b36

Browse files
committed
Add terser back, as it produces smaller output than esbuild
1 parent fb050bd commit 83e9b36

File tree

2 files changed

+24
-17
lines changed

2 files changed

+24
-17
lines changed

build/index.js

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,50 @@
11
import fs from 'node:fs/promises';
22
import { join, basename } from 'node:path';
33
import * as esbuild from 'esbuild';
4+
import { minify } from 'terser';
45
import packageInfo from '../package.json' with { type: 'json' };
56

67
try {
78
const outputFile = join(import.meta.dirname, '../css-doodle.min.js');
89
console.time('Build time');
910

10-
const result = await esbuild.build({
11+
const { metafile, outputFiles } = await esbuild.build({
1112
entryPoints: ['./src/index.js'],
12-
outfile: outputFile,
1313
bundle: true,
14-
minify: true,
14+
write: false,
1515
platform: 'browser',
1616
metafile: true,
1717
banner: {
1818
js: `/*! css-doodle v${packageInfo.version} MIT licensed */`,
1919
},
2020
});
2121

22-
console.log(await esbuild.analyzeMetafile(result.metafile));
22+
const { code } = await minify(outputFiles[0].text, {
23+
compress: true,
24+
mangle: true,
25+
format: {
26+
ascii_only: true,
27+
},
28+
});
29+
30+
await fs.writeFile(outputFile, minifyWhitespace(code), 'utf8');
2331

24-
await minifyWhitespace(outputFile);
25-
const size = await getReadableSize(outputFile);
26-
console.log(`${basename(outputFile)} - ${size}`);
32+
console.log(await esbuild.analyzeMetafile(metafile));
33+
console.log(`${basename(outputFile)} - ${await getReadableSize(outputFile)}`);
2734
console.timeLog(`Build time`);
28-
} catch {
35+
} catch (e) {
36+
console.log(e);
2937
process.exit(1);
3038
}
3139

32-
async function minifyWhitespace(file) {
33-
const text = await fs.readFile(file, 'utf8');
34-
const minified = text
35-
.replace(/([>;{}])\n/g, '$1')
36-
.replace(/([:;><{`])\s+/g, '$1')
37-
.replace(/\s+([:;><}`])/g, '$1')
40+
function minifyWhitespace(input) {
41+
return input
42+
.replace(/([>;{}])\\n/g, '$1')
43+
.replace(/([:;><{\`])\s+/g, '$1')
44+
.replace(/\s+([:;><}{\`])/g, '$1')
3845
.replace(/\s+([{}])\s+/g, '$1')
39-
.replace(/(\})\s+/g, '$1 ')
4046
.replace(/>\s+</g, '><')
41-
await fs.writeFile(file, minified, 'utf8');
47+
.replace(/\s{2,}/g, ' ');
4248
}
4349

4450
async function getReadableSize(file) {

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
"url": "https://opencollective.com/css-doodle"
1717
},
1818
"devDependencies": {
19-
"esbuild": "^0.25.4"
19+
"esbuild": "^0.25.4",
20+
"terser": "^5.42.0"
2021
},
2122
"files": [
2223
"css-doodle*.js",

0 commit comments

Comments
 (0)