NPM.Workspace (NPM v0.6.0)

Copy Markdown View Source

Workspace management for npm monorepos.

Handles discovery and resolution of workspace packages defined in the root package.json via the workspaces field.

Summary

Functions

Returns the topological build order for workspace packages.

Returns a dependency graph of inter-workspace dependencies.

Discovers workspace packages from the root package.json.

Returns a list of workspace package names.

Checks if a directory is a workspace root (has workspaces field).

Functions

build_order(packages)

@spec build_order([map()]) :: [String.t()]

Returns the topological build order for workspace packages.

Packages with no inter-workspace dependencies come first.

dep_graph(packages)

@spec dep_graph([map()]) :: %{required(String.t()) => [String.t()]}

Returns a dependency graph of inter-workspace dependencies.

Finds which workspace packages depend on other workspace packages.

discover(root_dir \\ ".")

@spec discover(String.t()) :: {:ok, [map()]} | {:error, term()}

Discovers workspace packages from the root package.json.

Reads the workspaces field and resolves glob patterns to actual package directories. Returns a list of workspace info maps.

names(root_dir \\ ".")

@spec names(String.t()) :: {:ok, [String.t()]} | {:error, term()}

Returns a list of workspace package names.

workspace_root?(dir \\ ".")

@spec workspace_root?(String.t()) :: boolean()

Checks if a directory is a workspace root (has workspaces field).