remove vite.config.electron.ts

This commit is contained in:
草鞋没号 2022-06-27 10:26:55 +08:00
parent 2dffca3b32
commit 6728af59d5

View File

@ -1,102 +0,0 @@
import { join } from 'path'
import { builtinModules } from 'module'
import { defineConfig } from 'vite-plugin-electron'
import resolve, { lib2esm } from 'vite-plugin-resolve'
import pkg from './package.json'
// @ts-ignore
const dependencies = Object.keys(pkg.dependencies || {})
const external = [
'electron',
...builtinModules,
// (🎯-①): For use Node.js package in Electron-Main, Preload-Script
...dependencies,
]
export default defineConfig({
main: {
entry: 'electron/main/index.ts',
vite: {
build: {
sourcemap: false,
outDir: 'dist/electron/main',
rollupOptions: {
external,
},
},
},
},
preload: {
input: {
// You can configure multiple preload here
splash: join(__dirname, 'electron/preload/splash.ts'),
},
vite: {
build: {
// For debug
sourcemap: 'inline',
outDir: 'dist/electron/preload',
rollupOptions: {
external,
},
}
}
},
})
/**
* ## Why?
*
* Many times, many people want to use the Node.js package in Electron-Renderer, but it may not work correctly in Vite by default.
* Electron-Renderer 使 Node.js Vite
*
* e.g.
* Let's use `serialport` as an example.
* 使 `serialport` 🌰
*
* ```js
* // ❌ May not work correctly in Vite by default.
* import serialport, { SerialPort, SerialPortMock } from 'serialport';
* ```
*
* At this time, we need to use `vite-plugin-resolve` to convert `serialport` to ensure that it works normally.
* 使 `vite-plugin-resolve` `serialport`
*
* e.g.
*
* ```js
* // serialport
* const _M_ = require('serialport');
* const _D_ = _M_.default || _M_;
* export { _D_ as default };
* export const SerialPort = _M_.SerialPort;
* export const SerialPortMock = _M_.SerialPortMock;
* ```
*
* Try to use again.
*
* ```js
* // ✅ This looks like nothing has changed, but it works normally after the `vite-plugin-resolve` converted.
* import serialport, { SerialPort, SerialPortMock } from 'serialport';
* ```
*
* 🚧 It should be noted that the Node.js package, as a dependency of the project, should be placed in `dependencies`; Unless you konw how to build them with Vite.
* Node.js `dependencies` 使 Vite
*/
export function useNodeJsInElectronRenderer() {
const entries = dependencies.reduce((memo, moduleId) => {
const members = Object.keys(require(moduleId))
const snippet_of_cjs2esm = lib2esm(
// CJS lib name
moduleId,
// export memebers
members,
{ format: 'cjs' },
)
return Object.assign(memo, { [moduleId]: snippet_of_cjs2esm })
}, {} as Parameters<typeof resolve>[0])
// (🎯-②): For use Node.js package in Electron-Renderer
return resolve(entries)
}