Skip to content

Commit caffb1e

Browse files
authored
Merge pull request #37 from electron-vite/v0.13.2
V0.13.2
2 parents 6748af8 + 47801e3 commit caffb1e

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
## 0.13.2 (2023-03-21)
2+
3+
- 7cc1abd refactor: better module type detect
4+
15
## 0.13.1 (2023-03-21)
26

3-
893e361 refactor!: improve Pre-Bundling #35
7+
- 893e361 refactor!: improve Pre-Bundling #35
48

59
## 0.13.0 (2023-03-20)
610

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vite-plugin-electron-renderer",
3-
"version": "0.13.1",
3+
"version": "0.13.2",
44
"description": "Support use Node.js API in Electron-Renderer",
55
"main": "index.mjs",
66
"types": "types",

src/optimizer.ts

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ export interface optimizerOptions {
2222
*
2323
* - `false` Vite's default Pre-Bundling will be used.
2424
*/
25-
resolve?: (args: import('esbuild').OnResolveArgs) => 'commonjs' | 'module' | false | null | undefined | Promise<'commonjs' | 'module' | false | null | undefined>
25+
resolve?: (args: import('esbuild').OnResolveArgs) => { type: 'commonjs' | 'module' } | false | void | Promise<{ type: 'commonjs' | 'module' } | false | void>
2626
}
2727

2828
export default function optimizer(options: optimizerOptions, nodeIntegration: boolean): VitePlugin {
2929
return {
30-
name: 'vite-plugin-electron-renderer:pre-bundle',
30+
name: 'vite-plugin-electron-renderer:optimizer',
3131
config(config) {
3232
node_modules_path = find_node_modules(config.root ? path.resolve(config.root) : process.cwd())[0]
3333
cache_dir = path.join(node_modules_path, CACHE_DIR)
@@ -109,18 +109,41 @@ export function esbuildPlugin(options: optimizerOptions): EsbuildPlugin {
109109
let moduleType: 'commonjs' | 'module' | undefined
110110
const packageJson = path.join(node_modules_path, id, 'package.json')
111111
if (fs.existsSync(packageJson)) {
112-
moduleType = cjs_require(packageJson).type === 'module' ? 'module' : 'commonjs'
112+
const pkg = cjs_require(packageJson)
113+
if (pkg.type) {
114+
// { "type": "module" }
115+
moduleType = pkg.type === 'module' ? 'module' : 'commonjs'
116+
} else if (pkg.module) {
117+
// { "module": "main.mjs" }
118+
moduleType = 'module'
119+
} else if (pkg.exports) {
120+
if (pkg.exports.import) {
121+
// { "exports": { "import": "main.mjs" } }
122+
moduleType = 'module'
123+
} else {
124+
for (const _export of Object.values<Record<string, string>>(pkg.exports)) {
125+
if (_export.import) {
126+
// { "exports": { ".": { "import": "main.mjs" } } }
127+
moduleType = 'module'
128+
break
129+
}
130+
}
131+
}
132+
}
113133
}
114134

115135
const userType = await resolve?.(args)
116136
if (userType === false) {
117137
// Use Vite's default Pre-Bundling
118138
return
119139
}
120-
if (userType === 'commonjs' || userType === 'module') {
121-
moduleType = userType
140+
if (userType && typeof userType === 'object') {
141+
moduleType = userType.type
122142
}
123143

144+
// Assign default value
145+
moduleType ??= 'commonjs'
146+
124147
// Only `cjs` modules, especially C/C++ npm-pkg, `es` modules will be use Vite's default Pre-Bundling
125148
if (moduleType === 'commonjs') {
126149
return {

0 commit comments

Comments
 (0)