Skip to content

Commit a57422e

Browse files
build: improve postbuild cleanup
1 parent 5033845 commit a57422e

File tree

1 file changed

+47
-38
lines changed

1 file changed

+47
-38
lines changed

esbuild.config.prod.mjs

Lines changed: 47 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -45,44 +45,53 @@ const buildsConfig = [
4545
},
4646
]
4747

48-
const builds = buildsConfig.map(({ format, outfile, minify }) =>
49-
esbuild.build({
50-
entryPoints: ['./src/index.tsx'],
51-
bundle: true,
52-
outfile,
53-
format,
54-
treeShaking: true,
55-
minify,
56-
sourcemap: true,
57-
external: ['react', 'react-dom', 'prop-types'],
58-
plugins: [
59-
cssModulesPlugin({
60-
// inject: true,
61-
v2: true,
62-
v2CssModulesOption: {
63-
pattern: `react-tooltip__[local]_[hash]`,
64-
},
65-
}),
66-
],
67-
}),
48+
const builds = await Promise.all(
49+
buildsConfig.map(({ format, outfile, minify }) =>
50+
esbuild.build({
51+
entryPoints: ['./src/index.tsx'],
52+
bundle: true,
53+
outfile,
54+
format,
55+
treeShaking: true,
56+
minify,
57+
sourcemap: true,
58+
external: ['react', 'react-dom', 'prop-types'],
59+
plugins: [
60+
cssModulesPlugin({
61+
// inject: true,
62+
v2: true,
63+
v2CssModulesOption: {
64+
pattern: `react-tooltip__[local]_[hash]`,
65+
},
66+
}),
67+
],
68+
}),
69+
),
6870
)
6971

70-
await Promise.all(builds)
72+
const toDelete = new Set()
73+
builds.forEach((build) => {
74+
const outputs = Object.keys(build.metafile.outputs)
75+
outputs.forEach((output) => {
76+
/**
77+
* delete all redundant `.css` and `.css.map` files
78+
* except the ones we actually want to keep
79+
*/
80+
if (/react-tooltip\.css(\.map)?$/.test(output)) {
81+
return
82+
}
83+
if (/\.css(\.map)?$/.test(output)) {
84+
toDelete.add(output)
85+
}
86+
})
87+
})
7188

72-
// Remove all unecessary or duplicated files from `dist` folder after build
73-
fs.unlink('./dist/react-tooltip.cjs.css', () => null) // generated by cjs build
74-
fs.unlink('./dist/react-tooltip.esm.css', () => null) // generated by esm build
75-
fs.unlink('./dist/react-tooltip.iife.css', () => null) // generated by iife build
76-
fs.unlink('./dist/react-tooltip.cjs.min.css', () => null) // generated by minified cjs build
77-
fs.unlink('./dist/react-tooltip.esm.min.css', () => null) // generated by minified esm build
78-
fs.unlink('./dist/react-tooltip.iife.min.css', () => null) // generated by minified iife build
79-
fs.unlink('./dist/react-tooltip.js', () => null) // generated by css build
80-
fs.unlink('./dist/react-tooltip.min.js', () => null) // generated by minified css build
81-
fs.unlink('./dist/react-tooltip.cjs.css.map', () => null) // generated by cjs build
82-
fs.unlink('./dist/react-tooltip.esm.css.map', () => null) // generated by esm build
83-
fs.unlink('./dist/react-tooltip.iife.css.map', () => null) // generated by iife build
84-
fs.unlink('./dist/react-tooltip.cjs.min.css.map', () => null) // generated by minified cjs build
85-
fs.unlink('./dist/react-tooltip.esm.min.css.map', () => null) // generated by minified esm build
86-
fs.unlink('./dist/react-tooltip.iife.min.css.map', () => null) // generated by minified iife build
87-
fs.unlink('./dist/react-tooltip.js.map', () => null) // generated by css build
88-
fs.unlink('./dist/react-tooltip.min.js.map', () => null) // generated by minified css build
89+
/**
90+
* delete the extra build files from the CSS build
91+
*/
92+
toDelete.add('dist/react-tooltip.js')
93+
toDelete.add('dist/react-tooltip.js.map')
94+
95+
toDelete.forEach((file) => {
96+
fs.unlink(file, () => null)
97+
})

0 commit comments

Comments
 (0)