Skip to content

Commit 61c8ffd

Browse files
committed
fix: minify at render chunk
1 parent a3b6b1c commit 61c8ffd

File tree

4 files changed

+32
-75
lines changed

4 files changed

+32
-75
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
"prepublishOnly": "pnpm run build"
6666
},
6767
"dependencies": {
68-
"@ampproject/remapping": "^2.3.0",
6968
"oxc-minify": "^0.48.2",
7069
"oxc-resolver": "^4.0.0",
7170
"oxc-transform": "^0.48.2",
@@ -80,6 +79,7 @@
8079
"bumpp": "^10.0.2",
8180
"eslint": "^9.20.0",
8281
"prettier": "^3.5.0",
82+
"rollup": "^4.34.6",
8383
"tsdown": "^0.5.9",
8484
"tsx": "^4.19.2",
8585
"typescript": "^5.7.3",

pnpm-lock.yaml

Lines changed: 3 additions & 42 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.ts

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,33 @@
11
import path from 'node:path'
2-
import remapping from '@ampproject/remapping'
32
import { minify } from 'oxc-minify'
43
import { ResolverFactory } from 'oxc-resolver'
54
import { transform } from 'oxc-transform'
65
import { createUnplugin, type UnpluginInstance } from 'unplugin'
76
import { createFilter } from 'unplugin-utils'
87
import { resolveOptions, type Options } from './core/options'
8+
import type { RenderedChunk } from 'rollup'
99

1010
export const Oxc: UnpluginInstance<Options | undefined, false> = createUnplugin(
1111
(rawOptions = {}) => {
1212
const options = resolveOptions(rawOptions)
1313
const filter = createFilter(options.include, options.exclude)
1414

15-
const name = 'unplugin-oxc'
15+
const renderChunk: any =
16+
options.minify !== false
17+
? (code: string, chunk: RenderedChunk) => {
18+
const result = minify(chunk.fileName, code, {
19+
...options.minify,
20+
sourcemap: options.sourcemap,
21+
})
22+
return {
23+
code: result.code,
24+
map: result.map,
25+
}
26+
}
27+
: undefined
28+
1629
return {
17-
name,
30+
name: 'unplugin-oxc',
1831
enforce: options.enforce,
1932

2033
resolveId:
@@ -40,34 +53,19 @@ export const Oxc: UnpluginInstance<Options | undefined, false> = createUnplugin(
4053
},
4154

4255
transform:
43-
options.transform !== false || options.minify !== false
56+
options.transform !== false
4457
? (code, id) => {
45-
let map
46-
if (options.transform !== false) {
47-
const result = transform(id, code, {
48-
...options.transform,
49-
sourcemap: options.sourcemap,
50-
})
51-
code = result.code
52-
map = result.map
53-
}
54-
55-
if (options.minify !== false) {
56-
const result = minify(id, code, {
57-
...options.minify,
58-
sourcemap: options.sourcemap,
59-
})
60-
code = result.code
61-
if (map && result.map) {
62-
map = remapping([result.map, map], () => null, {})
63-
} else {
64-
map = result.map
65-
}
66-
}
67-
68-
return { code, map }
58+
const result = transform(id, code, {
59+
...options.transform,
60+
sourcemap: options.sourcemap,
61+
})
62+
return { code: result.code, map: result.map }
6963
}
7064
: undefined,
65+
66+
rollup: { renderChunk },
67+
rolldown: { renderChunk },
68+
vite: { renderChunk },
7169
}
7270
},
7371
)

tests/__snapshots__/rollup.test.ts.snap

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,9 @@ export { Color, foo, node, num, optionalChain };
3232

3333
exports[`rollup > entry-minify.ts 1`] = `
3434
"// entry-minify.js
35-
function foo(){return 100}try{foo();}catch(e){}
36-
37-
export { foo };
35+
function foo(){return 100}try{foo()}catch(e){}export{foo};
3836
//# sourceMappingURL=entry-minify.js.map
3937
4038
// entry-minify.js.map
41-
{"version":3,"file":"entry-minify.js","sources":["tests/fixtures/entry-minify.ts"],"sourcesContent":["export function foo(): number {\\n return 100\\n}\\n\\ntry {\\n foo()\\n} catch (err) {}\\n"],"names":["err"],"mappings":"AAAO,SAAS,GAAA,EAAc,CAC5B,OACD,GAAA,CAED,GAAI,CACF,GAAK,GACN,CAAQA,MAAAA,CAAAA,CAAK;;;;"}"
39+
{"version":3,"file":"entry-minify.js","sources":["tests/fixtures/entry-minify.ts"],"sourcesContent":["export function foo(): number {\\n return 100\\n}\\n\\ntry {\\n foo()\\n} catch (err) {}\\n"],"names":["err"],"mappings":"AAAO,SAAS,KAAc,CACrB,MAAA,IACR,CAED,GAAI,CACG,KAAA,AACN,OAAQA,EAAK,CAAA"}"
4240
`;

0 commit comments

Comments
 (0)