Skip to content

Commit 73974ba

Browse files
committed
feat: serviceWork var -> const
1 parent 6598131 commit 73974ba

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

tools/buildServiceWorker/bundleCode.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import { build } from 'esbuild';
22
import { minify } from 'terser';
33
import { format } from 'prettier';
4+
import { ESLint } from 'eslint';
45

56
export const bundleCode = async (options: {
67
entry: string;
78
inject: Record<string, string>;
89
minify: boolean;
910
}): Promise<string> => {
1011
const shouldMinify = options.minify;
12+
13+
// bundle with esbuild
1114
const esbuildResult = await build({
1215
entryPoints: [options.entry],
1316
bundle: true,
@@ -21,7 +24,26 @@ export const bundleCode = async (options: {
2124
});
2225
const codeFromEsBuild = esbuildResult.outputFiles[0].text;
2326

24-
const terserOutput = await minify(codeFromEsBuild, {
27+
// convert var to let/const
28+
const eslint = new ESLint({
29+
fix: true,
30+
overrideConfigFile: true,
31+
overrideConfig: {
32+
languageOptions: {
33+
ecmaVersion: 'latest',
34+
sourceType: 'module',
35+
},
36+
rules: {
37+
'prefer-const': 'error',
38+
'no-var': 'error',
39+
},
40+
},
41+
});
42+
const results = await eslint.lintText(codeFromEsBuild);
43+
const codeFromEsLint = results[0]!.output!;
44+
45+
// trim dead code and minify with terser
46+
const terserOutput = await minify(codeFromEsLint, {
2547
compress: {
2648
passes: 3,
2749
dead_code: true,
@@ -35,10 +57,12 @@ export const bundleCode = async (options: {
3557
});
3658
const codeFromTerser = terserOutput.code!;
3759

60+
// return minified code for production
3861
if (shouldMinify) {
3962
return codeFromTerser;
4063
}
4164

65+
// format with prettier
4266
const formatedCode = await format(codeFromEsBuild, { parser: 'babel' });
4367
return formatedCode;
4468
};

0 commit comments

Comments
 (0)