Nondeterministic Postrequisite Metaprotocol

    bundle-require
    TypeScript icon, indicating that this package has built-in type declarations

    3.0.4 • Public • Published

    💛 You can help the author become a full-time open-source maintainer by sponsoring him on GitHub.


    bundle-require

    npm version npm downloads jsDocs.io

    Use Case

    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.

    How it works

    • Bundle your file with esbuild, node_modules are excluded because it's problematic to try to bundle it
      • __filename, __dirname and import.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)

    Install

    npm i bundle-require esbuild

    esbuild is a peer dependency.

    Usage

    import { bundleRequire } from 'bundle-require'
    
    const { mod } = await bundleRequire({
      filepath: './project/vite.config.ts',
    })

    API

    https://www.jsdocs.io/package/bundle-require

    Projects Using bundle-require

    Projects that use bundle-require:

    • VuePress: 📝 Minimalistic Vue-powered static site generator.

    Sponsors

    sponsors

    License

    MIT © EGOIST

    Keywords

    none

    Install

    npm i bundle-require

    DownloadsWeekly Downloads

    190,326

    Version

    3.0.4

    License

    MIT

    Unpacked Size

    21.6 kB

    Total Files

    6

    Last publish

    Collaborators

    • egoist