npm_link_package rule

Macros and Functions

"Links an npm package to node_modules if link is True.

When called at the root_package, a virtual store target is generated named "link__{bazelified_name}__store".

When linking, a "{name}" target is generated which consists of the node_modules/ symlink and transitively its virtual store link and the virtual store links of the transitive closure of deps.

When linking, "{name}/dir" filegroup is also generated that refers to a directory artifact can be used to access the package directory for creating entry points or accessing files in the package.

Example usage (generated)

load("@aspect_rules_js//npm:defs.bzl", "npm_link_package")

npm_link_package(
    # The name of the link target to create if `link` is True
    name = "",
)

The name of the link target to create if link is True. For first-party deps linked across a workspace, the name must match in all packages being linked as it is used to derive the virtual store link target name.

the root package where the node_modules virtual store is linked to

whether or not to link in this package If false, only the npm_package_store target will be created if this is called in the root_package.

the npm_package target to link; may only to be specified when linking in the root package

list of npm_package_store; may only to be specified when linking in the root package

whether or not to fail if this is called in a package that is not the root package and link is False

whether or not to automatically add a manual tag to the generated targets Links tagged "manual" dy default is desirable so that they are not built by bazel build ... if they are unused downstream. For 3rd party deps, this is particularly important so that 3rd party deps are not fetched at all unless they are used.

the visibility of the generated targets

see attributes of npm_package_store rule