Workspaces

Workspace support for monorepos. Discovers packages from package.json workspaces or pnpm-workspace.yaml and creates symlinks for cross-package resolution.

Discovering workspaces

import { discoverWorkspaces } from "@run0/jiki";

const workspaces = discoverWorkspaces(container.vfs, "/");
// [{ name: '@app/utils', path: '/packages/utils', version: '1.0.0' }]

Reads workspace patterns from:

  • package.json → "workspaces": ["packages/*"]
  • pnpm-workspace.yaml → packages: ['packages/*']

Glob patterns supported: packages/*, apps/**

Linking workspaces

import { linkWorkspaces } from "@run0/jiki";

linkWorkspaces(container.vfs, "/", workspaces);
// Creates symlinks: /node_modules/@app/utils → /packages/utils

Resolving workspace: Protocol

import { isWorkspaceProtocol, resolveWorkspaceDep } from "@run0/jiki";

isWorkspaceProtocol("workspace:*"); // true
isWorkspaceProtocol("^1.0.0"); // false

const dep = resolveWorkspaceDep("@app/utils", workspaces);
// { name: '@app/utils', path: '/packages/utils', version: '1.0.0' }

WorkspacePackage

interface WorkspacePackage {
  name: string; // package name
  path: string; // absolute path in VFS
  version: string; // version from package.json
}