Skip to content

Commit 944e92a

Browse files
committed
feat: support bundling .node files by default
1 parent 1183ad3 commit 944e92a

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

src/features/rolldown.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,10 @@ async function resolveInputOptions(
202202
inject,
203203
},
204204
plugins,
205-
moduleTypes: loader,
205+
moduleTypes: {
206+
'.node': 'copy',
207+
...loader,
208+
},
206209
logLevel: logger.level === 'error' ? 'silent' : logger.level,
207210
onLog(level, log, defaultHandler) {
208211
// suppress mixed export warnings if cjsDefault is enabled
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
## assets/binding-BaUr1jMm.node
2+
3+
```node
4+
fake-native-addon-binary-content
5+
```
6+
7+
## index.mjs
8+
9+
```mjs
10+
import { createRequire } from "node:module";
11+
//#endregion
12+
//#region index.ts
13+
const native = (/* @__PURE__ */ createRequire(import.meta.url))("./assets/binding-BaUr1jMm.node");
14+
//#endregion
15+
export { native };
16+
17+
```

tests/e2e.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -896,3 +896,17 @@ test('failOnWarn', async (context) => {
896896
}),
897897
).rejects.toThrow('Module not found')
898898
})
899+
900+
test('.node file bundle', async (context) => {
901+
const files = {
902+
'index.ts': `
903+
const native = require('./binding.node')
904+
export { native }
905+
`,
906+
'binding.node': 'fake-native-addon-binary-content',
907+
}
908+
await testBuild({
909+
context,
910+
files,
911+
})
912+
})

0 commit comments

Comments
 (0)