I can’t find a vite solution for NodeJS which is disappointing. If anyone has figured out a way to ship the minimal amount of code from a NodeJS monorepo (ideally with web and server code, but generally decoupled) I’d enjoy seeing the solution!
Build A Library With esbuild - How to bundle ESM, IIFE or CommonJS libraries with esbuild
https://medium.com/geekculture/build-a-library-with-esbuild-...
---
I had to figure out a trick for Node side to exclude external modules. In my build script:
const esbuild = require('esbuild')
const { dependencies, peerDependencies } = require('./package.json')
const external = [
...Object.keys(dependencies),
...Object.keys(peerDependencies)
]
await esbuild
.build({
entryPoints: ['src/index.ts'],
outfile: 'lib/index.mjs',
bundle: true,
sourcemap: false,
minify: false,
splitting: false,
format: 'esm',
target: ['esnext'],
external
}),Edit: vite allows you to specify (e.g. node specific) exclusions/globals in the config, it also allows you to specify a 'library' build if that's what you're interested in .. with named exports, etc.
Here's a monorepo example, it's using cloudflare workers instead of node. But you could set up a vite-node server using concurrently or create a vite plugin.