pnpm link symlinks a local SDK package into a test project. Changes are available in the
test project after a rebuild, without a publish step. For packages where linking causes problems (e.g. SvelteKit or
Angular), use yalc instead.
Build the SDK package and the packages it depends on. Run this in the root of the repo:
pnpm run build:dev:filter @sentry/node # or any other SDK packageIn your test project, run pnpm link with the path to the SDK package:
pnpm link /path/to/sentry-javascript/packages/nodeYou only need to link the SDK package that your project imports. Its dependencies (e.g. @sentry/core) resolve from
the monorepo, so they are also the local versions. If your project also imports a dependency directly (e.g.
@sentry/core), that import still uses the version from the registry. Link that package too.
pnpm link adds a link: override to the pnpm-workspace.yaml of your test project. If the file does not exist,
pnpm link creates it. Do not commit this override.
The link points to the build/ folder of the package. After a code change, rebuild the package and restart your test
project. You do not need to link again.
# in the package you changed, e.g. packages/core
pnpm run build:transpileIn your test project, run pnpm unlink with the package name. This removes the link: override and installs the
registry version again.
pnpm unlink @sentry/nodeIn pnpm 10, pnpm unlink shows "Nothing to unlink" and does not remove the override. Remove the override
for the package from pnpm-workspace.yaml manually, then run pnpm install.
Make sure that node_modules/@sentry/node in your test project is a symlink to the monorepo:
ls -la node_modules/@sentry/nodeIf you run Node.js or your bundler with --preserve-symlinks, dependencies resolve from the node_modules of your
test project and not from the monorepo. Do not use this flag.
Vite pre-bundles and caches dependencies for dev builds. Run vite dev --force to clear the cache.