esbuild plugin for Typescript references.
A common approach for monorepos is yarn/npm/pnpm workspaces + typescript references.
While it works in VSCode and using tsc --build
, esbuild doesn't resolve such references automatically. The feature request to add support for it was closed as it is not in the scope of the bundler and creation of a plugin was suggested.
This is the plugin.
npm install --save-dev esbuild-plugin-ts-references
Define plugin in the plugins
section of esbuild config like this:
const esbuild = require('esbuild');
const tsReferences = require('esbuild-plugin-ts-references');
esbuild.build({
// ...
plugins: [tsReferences]
});
Currently the algorithm to resolve the references is very simple (but it works for me):
- Find the closest
tsconfig.json
to the build target - Resolve
package.json
andtsconfig.json
of references - Map package name from
package.json
torootDir
fromtsconfig.json
- Profit!