| <!-- ********************* | |
| DO NOT EDIT THIS FILE | |
| It is a generated build output from Stardoc. | |
| Instead you must edit the .bzl file where the rules are declared, | |
| or possibly a markdown file next to the .bzl file | |
| ********************* --> | |
| # rules_nodejs Bazel module | |
| Features: | |
| - A [Toolchain](https://docs.bazel.build/versions/main/toolchains.html) | |
| that fetches a hermetic copy of node and npm - independent of what's on the developer's machine. | |
| - Core [Providers](https://docs.bazel.build/versions/main/skylark/rules.html#providers) to allow interop between JS rules. | |
| ## node_repositories | |
| **USAGE** | |
| <pre> | |
| node_repositories(<a href="#node_repositories-name">name</a>, <a href="#node_repositories-node_download_auth">node_download_auth</a>, <a href="#node_repositories-node_repositories">node_repositories</a>, <a href="#node_repositories-node_urls">node_urls</a>, <a href="#node_repositories-node_version">node_version</a>, <a href="#node_repositories-platform">platform</a>, | |
| <a href="#node_repositories-repo_mapping">repo_mapping</a>, <a href="#node_repositories-use_nvmrc">use_nvmrc</a>) | |
| </pre> | |
| To be run in user's WORKSPACE to install rules_nodejs dependencies. | |
| This rule sets up node, npm, and npx. The versions of these tools can be specified in one of three ways | |
| ### Simplest Usage | |
| Specify no explicit versions. This will download and use the latest NodeJS that was available when the | |
| version of rules_nodejs you're using was released. | |
| ### Forced version(s) | |
| You can select the version of NodeJS to download & use by specifying it when you call node_repositories, | |
| using a value that matches a known version (see the default values) | |
| ### Using a custom version | |
| You can pass in a custom list of NodeJS repositories and URLs for node_repositories to use. | |
| #### Custom NodeJS versions | |
| To specify custom NodeJS versions, use the `node_repositories` attribute | |
| ```python | |
| node_repositories( | |
| node_repositories = { | |
| "10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e"), | |
| "10.10.0-linux_amd64": ("node-v10.10.0-linux-x64.tar.xz", "node-v10.10.0-linux-x64", "686d2c7b7698097e67bcd68edc3d6b5d28d81f62436c7cf9e7779d134ec262a9"), | |
| "10.10.0-windows_amd64": ("node-v10.10.0-win-x64.zip", "node-v10.10.0-win-x64", "70c46e6451798be9d052b700ce5dadccb75cf917f6bf0d6ed54344c856830cfb"), | |
| }, | |
| ) | |
| ``` | |
| These can be mapped to a custom download URL, using `node_urls` | |
| ```python | |
| node_repositories( | |
| node_version = "10.10.0", | |
| node_repositories = {"10.10.0-darwin_amd64": ("node-v10.10.0-darwin-x64.tar.gz", "node-v10.10.0-darwin-x64", "00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e")}, | |
| node_urls = ["https://mycorpproxy/mirror/node/v{version}/{filename}"], | |
| ) | |
| ``` | |
| A Mac client will try to download node from `https://mycorpproxy/mirror/node/v10.10.0/node-v10.10.0-darwin-x64.tar.gz` | |
| and expect that file to have sha256sum `00b7a8426e076e9bf9d12ba2d571312e833fe962c70afafd10ad3682fdeeaa5e` | |
| See the [the repositories documentation](repositories.html) for how to use the resulting repositories. | |
| ### Using a custom node.js. | |
| To avoid downloads, you can check in a vendored node.js binary or can build one from source. | |
| See [toolchains](./toolchains.md). | |
| **ATTRIBUTES** | |
| <h4 id="node_repositories-name">name</h4> | |
| (*<a href="https://bazel.build/docs/build-ref.html#name">Name</a>, mandatory*): A unique name for this repository. | |
| <h4 id="node_repositories-node_download_auth">node_download_auth</h4> | |
| (*<a href="https://bazel.build/docs/skylark/lib/dict.html">Dictionary: String -> String</a>*): auth to use for all url requests | |
| Example: {"type": "basic", "login": "<UserName>", "password": "<Password>" } | |
| Defaults to `{}` | |
| <h4 id="node_repositories-node_repositories">node_repositories</h4> | |
| (*<a href="https://bazel.build/docs/skylark/lib/dict.html">Dictionary: String -> List of strings</a>*): Custom list of node repositories to use | |
| A dictionary mapping NodeJS versions to sets of hosts and their corresponding (filename, strip_prefix, sha256) tuples. | |
| You should list a node binary for every platform users have, likely Mac, Windows, and Linux. | |
| By default, if this attribute has no items, we'll use a list of all public NodeJS releases. | |
| Defaults to `{}` | |
| <h4 id="node_repositories-node_urls">node_urls</h4> | |
| (*List of strings*): custom list of URLs to use to download NodeJS | |
| Each entry is a template for downloading a node distribution. | |
| The `{version}` parameter is substituted with the `node_version` attribute, | |
| and `{filename}` with the matching entry from the `node_repositories` attribute. | |
| Defaults to `["https://nodejs.org/dist/v{version}/{filename}"]` | |
| <h4 id="node_repositories-node_version">node_version</h4> | |
| (*String*): the specific version of NodeJS to install | |
| Defaults to `"18.18.2"` | |
| <h4 id="node_repositories-platform">platform</h4> | |
| (*String*): Internal use only. Which platform to install as a toolchain. If unset, we assume the repository is named nodejs_[platform] | |
| Defaults to `""` | |
| <h4 id="node_repositories-repo_mapping">repo_mapping</h4> | |
| (*<a href="https://bazel.build/docs/skylark/lib/dict.html">Dictionary: String -> String</a>, mandatory*): A dictionary from local repository name to global repository name. This allows controls over workspace dependency resolution for dependencies of this repository.<p>For example, an entry `"@foo": "@bar"` declares that, for any time this repository depends on `@foo` (such as a dependency on `@foo//some:target`, it should actually resolve that dependency within globally-declared `@bar` (`@bar//some:target`). | |
| <h4 id="node_repositories-use_nvmrc">use_nvmrc</h4> | |
| (*<a href="https://bazel.build/docs/build-ref.html#labels">Label</a>*): the local path of the .nvmrc file containing the version of node | |
| If set then also set node_version to the version found in the .nvmrc file. | |
| Defaults to `None` | |
| ## node_toolchain | |
| **USAGE** | |
| <pre> | |
| node_toolchain(<a href="#node_toolchain-name">name</a>, <a href="#node_toolchain-headers">headers</a>, <a href="#node_toolchain-npm">npm</a>, <a href="#node_toolchain-npm_files">npm_files</a>, <a href="#node_toolchain-npm_path">npm_path</a>, <a href="#node_toolchain-run_npm">run_npm</a>, <a href="#node_toolchain-target_tool">target_tool</a>, <a href="#node_toolchain-target_tool_path">target_tool_path</a>) | |
| </pre> | |
| Defines a node toolchain for a platform. | |
| You can use this to refer to a vendored nodejs binary in your repository, | |
| or even to compile nodejs from sources using rules_foreign_cc or other rules. | |
| First, in a BUILD.bazel file, create a node_toolchain definition: | |
| ```starlark | |
| load("@rules_nodejs//nodejs:toolchain.bzl", "node_toolchain") | |
| node_toolchain( | |
| name = "node_toolchain", | |
| target_tool = "//some/path/bin/node", | |
| ) | |
| ``` | |
| Next, declare which execution platforms or target platforms the toolchain should be selected for | |
| based on constraints. | |
| ```starlark | |
| toolchain( | |
| name = "my_nodejs", | |
| exec_compatible_with = [ | |
| "@platforms//os:linux", | |
| "@platforms//cpu:x86_64", | |
| ], | |
| toolchain = ":node_toolchain", | |
| toolchain_type = "@rules_nodejs//nodejs:toolchain_type", | |
| ) | |
| ``` | |
| See https://bazel.build/extending/toolchains#toolchain-resolution for more information on toolchain | |
| resolution. | |
| Finally in your `WORKSPACE`, register it with `register_toolchains("//:my_nodejs")` | |
| For usage see https://docs.bazel.build/versions/main/toolchains.html#defining-toolchains. | |
| You can use the `--toolchain_resolution_debug` flag to `bazel` to help diagnose which toolchain is selected. | |
| **ATTRIBUTES** | |
| <h4 id="node_toolchain-name">name</h4> | |
| (*<a href="https://bazel.build/docs/build-ref.html#name">Name</a>, mandatory*): A unique name for this target. | |
| <h4 id="node_toolchain-headers">headers</h4> | |
| (*<a href="https://bazel.build/docs/build-ref.html#labels">Label</a>*): A cc_library that contains the Node/v8 header files for this target platform. | |
| Defaults to `None` | |
| <h4 id="node_toolchain-npm">npm</h4> | |
| (*<a href="https://bazel.build/docs/build-ref.html#labels">Label</a>*): A hermetically downloaded npm executable target for this target's platform. | |
| Defaults to `None` | |
| <h4 id="node_toolchain-npm_files">npm_files</h4> | |
| (*<a href="https://bazel.build/docs/build-ref.html#labels">List of labels</a>*): Files required in runfiles to run npm. | |
| Defaults to `[]` | |
| <h4 id="node_toolchain-npm_path">npm_path</h4> | |
| (*String*): Path to an existing npm executable for this target's platform. | |
| Defaults to `""` | |
| <h4 id="node_toolchain-run_npm">run_npm</h4> | |
| (*<a href="https://bazel.build/docs/build-ref.html#labels">Label</a>*): A template file that allows us to execute npm | |
| Defaults to `None` | |
| <h4 id="node_toolchain-target_tool">target_tool</h4> | |
| (*<a href="https://bazel.build/docs/build-ref.html#labels">Label</a>*): A hermetically downloaded nodejs executable target for this target's platform. | |
| Defaults to `None` | |
| <h4 id="node_toolchain-target_tool_path">target_tool_path</h4> | |
| (*String*): Path to an existing nodejs executable for this target's platform. | |
| Defaults to `""` | |
| ## UserBuildSettingInfo | |
| **USAGE** | |
| <pre> | |
| UserBuildSettingInfo(<a href="#UserBuildSettingInfo-value">value</a>) | |
| </pre> | |
| **FIELDS** | |
| <h4 id="UserBuildSettingInfo-value">value</h4> | |
| (Undocumented) | |