💛 You can help the author become a full-time open-source maintainer by sponsoring him on GitHub.
Projects like Vite need to load config files provided by the user, but you can't do it with just require()
because it's not necessarily a CommonJS module, it could also be a .mjs
or even be written in TypeScript, and that's where the bundle-require
package comes in, it loads the config file regardless what module format it is.
- Bundle your file with esbuild,
node_modules
are excluded because it's problematic to try to bundle it__filename
,__dirname
andimport.meta.url
are replaced with source file's value instead of the one from the temporary output file
- Output file in
esm
format if possible (for.ts
,.js
input files) - Load output file with
import()
if possible - Return the loaded module and its dependencies (imported files)
npm i bundle-require esbuild
esbuild
is a peer dependency.
import { bundleRequire } from 'bundle-require'
const { mod } = await bundleRequire({
filepath: './project/vite.config.ts',
})
https://www.jsdocs.io/package/bundle-require
Projects that use bundle-require:
- VuePress: 📝 Minimalistic Vue-powered static site generator.
MIT © EGOIST