Build ES module to CommonJs module for Node.js/Electron
When using ES modules(e.g.node-fetch) in Node.js/Electron projects, we may need to compile them into CommonJs modules to ensure they work correctly.
在 Node.js/Electron 项目中使用 ES 模块时(e.g. node-fetch),我们可能需要将其编译成 CommonJs 模块,以确保它们能够正常工作
npm i -D vite-plugin-esmodule webpack
vite.config.js
import esmodule from 'vite-plugin-esmodule' export default { plugins: [ // Take `execa`, `node-fetch` and `file-type` as examples esmodule([ 'execa', 'node-fetch', // 🌱 this means that you have explicit specified the entry file { 'file-type': 'file-type/index.js' }, ]), ], }
execa.js
import {execa} from 'execa'; const {stdout} = await execa('echo', ['unicorns']); console.log(stdout); //=> 'unicorns'
esmodule(modules[, webpack])
import type { Configuration } from 'webpack' type ModuleRecord = string | { [module: string]: string } function esmodule( modules: ModuleRecord[] | ((esmPkgs: string[]) => ModuleRecord[]), webpack?: ((config: Configuration) => Configuration | void | Promise<Configuration | void>), ): import('vite').Plugin
This plugin just wraps vite-plugin-optimizer