| <!-- ********************* |
| 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 |
| ********************* --> |
| # Toolchains |
| |
| API docs for [Toolchain](https://docs.bazel.build/versions/main/toolchains.html) support. |
| |
| When you call `nodejs_register_toolchains()` in your `WORKSPACE` file it will setup a node toolchain for executing tools on all currently supported platforms. |
| |
| If you have an advanced use-case you can also register your own toolchains. See [node_toolchain](./Core.md#node_toolchain) |
| |
| ## Node.js binary for the target platform |
| |
| Sometimes your target platform (where your software runs) is different from the host platform (where you run Bazel) or execution platform (where Bazel actions run). |
| The most common case is developing a docker image on MacOS, which will execute in a Linux container. |
| |
| Our toolchain support is conditional on the execution platform, as it's meant for running nodejs tools during the build. |
| It is not needed for this use case. Instead, simply select the nodejs you want to include in the runtime. |
| |
| For example, rules_docker has a `nodejs_image` rule, which takes a `node_repository_name` attribute indicating |
| which nodejs binary you want to include in the image. `nodejs_linux_amd64` is the value you'd use. |
| |
| ## Cross-compilation |
| |
| Bazel Toolchains are intended to support cross-compilation, e.g. building a linux binary from mac or windows. |
| Most JavaScript use cases produce platform-independent code, |
| but the exception is native modules which use [node-gyp](https://github.com/nodejs/node-gyp). |
| Any native modules will still be fetched and built, by npm/yarn, for your host platform, |
| so they will not work on the target platform. |
| The workaround is to perform the npm_install inside a docker container so that it produces modules for the target platform. |
| |
| Follow https://github.com/bazelbuild/rules_nodejs/issues/506 for updates on support for node-gyp cross-compilation. |
| |
| ## node_toolchain |
| |
| See <./Core.md#node_toolchain> |
| |
| |
| |
| ## cypress_toolchain |
| |
| **USAGE** |
| |
| <pre> |
| cypress_toolchain(<a href="#cypress_toolchain-name">name</a>, <a href="#cypress_toolchain-cypress_bin">cypress_bin</a>, <a href="#cypress_toolchain-cypress_bin_path">cypress_bin_path</a>, <a href="#cypress_toolchain-cypress_files">cypress_files</a>) |
| </pre> |
| |
| Defines a cypress toolchain. |
| |
| For usage see https://docs.bazel.build/versions/main/toolchains.html#defining-toolchains. |
| |
| |
| **ATTRIBUTES** |
| |
| |
| <h4 id="cypress_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="cypress_toolchain-cypress_bin">cypress_bin</h4> |
| |
| (*<a href="https://bazel.build/docs/build-ref.html#labels">Label</a>*): A hermetically downloaded cypress executable binary for the target platform. |
| |
| Defaults to `None` |
| |
| <h4 id="cypress_toolchain-cypress_bin_path">cypress_bin_path</h4> |
| |
| (*String*): Path to an existing cypress executable for the target platform. |
| |
| Defaults to `""` |
| |
| <h4 id="cypress_toolchain-cypress_files">cypress_files</h4> |
| |
| (*<a href="https://bazel.build/docs/build-ref.html#labels">Label</a>*): A hermetically downloaded cypress filegroup of all cypress binary files for the target platform. Must be set when cypress_bin is set. |
| |
| Defaults to `None` |
| |
| |
| ## configure_esbuild_toolchains |
| |
| **USAGE** |
| |
| <pre> |
| configure_esbuild_toolchains(<a href="#configure_esbuild_toolchains-name">name</a>, <a href="#configure_esbuild_toolchains-platforms">platforms</a>) |
| </pre> |
| |
| Configures esbuild toolchains for a list of supported platforms |
| |
| **PARAMETERS** |
| |
| |
| <h4 id="configure_esbuild_toolchains-name">name</h4> |
| |
| unused |
| |
| Defaults to `""` |
| |
| <h4 id="configure_esbuild_toolchains-platforms">platforms</h4> |
| |
| dict of platforms to configure toolchains for |
| |
| Defaults to `{}` |
| |
| |
| ## cypress_repositories |
| |
| **USAGE** |
| |
| <pre> |
| cypress_repositories(<a href="#cypress_repositories-name">name</a>, <a href="#cypress_repositories-version">version</a>, <a href="#cypress_repositories-linux_urls">linux_urls</a>, <a href="#cypress_repositories-linux_sha256">linux_sha256</a>, <a href="#cypress_repositories-darwin_urls">darwin_urls</a>, <a href="#cypress_repositories-darwin_sha256">darwin_sha256</a>, |
| <a href="#cypress_repositories-darwin_arm64_urls">darwin_arm64_urls</a>, <a href="#cypress_repositories-darwin_arm64_sha256">darwin_arm64_sha256</a>, <a href="#cypress_repositories-windows_urls">windows_urls</a>, <a href="#cypress_repositories-windows_sha256">windows_sha256</a>) |
| </pre> |
| |
| Repository rule used to install cypress binary. |
| |
| **PARAMETERS** |
| |
| |
| <h4 id="cypress_repositories-name">name</h4> |
| |
| Name of the external workspace where the cypress binary lives |
| |
| |
| |
| <h4 id="cypress_repositories-version">version</h4> |
| |
| Version of cypress binary to use. Should match package.json |
| |
| |
| |
| <h4 id="cypress_repositories-linux_urls">linux_urls</h4> |
| |
| (Optional) URLs at which the cypress binary for linux distros of linux can be downloaded. If omitted, https://cdn.cypress.io/desktop will be used. |
| |
| Defaults to `[]` |
| |
| <h4 id="cypress_repositories-linux_sha256">linux_sha256</h4> |
| |
| (Optional) SHA-256 of the linux cypress binary |
| |
| Defaults to `""` |
| |
| <h4 id="cypress_repositories-darwin_urls">darwin_urls</h4> |
| |
| (Optional) URLs at which the cypress binary for darwin can be downloaded. If omitted, https://cdn.cypress.io/desktop will be used. |
| |
| Defaults to `[]` |
| |
| <h4 id="cypress_repositories-darwin_sha256">darwin_sha256</h4> |
| |
| (Optional) SHA-256 of the darwin cypress binary |
| |
| Defaults to `""` |
| |
| <h4 id="cypress_repositories-darwin_arm64_urls">darwin_arm64_urls</h4> |
| |
| (Optional) URLs at which the cypress binary for darwin arm64 can be downloaded. If omitted, https://cdn.cypress.io/desktop will be used (note: as of this writing (11/2021), Cypress does not have native arm64 builds, and this URL will link to the x86_64 build to run under Rosetta). |
| |
| Defaults to `[]` |
| |
| <h4 id="cypress_repositories-darwin_arm64_sha256">darwin_arm64_sha256</h4> |
| |
| (Optional) SHA-256 of the darwin arm64 cypress binary |
| |
| Defaults to `""` |
| |
| <h4 id="cypress_repositories-windows_urls">windows_urls</h4> |
| |
| (Optional) URLs at which the cypress binary for windows distros of linux can be downloaded. If omitted, https://cdn.cypress.io/desktop will be used. |
| |
| Defaults to `[]` |
| |
| <h4 id="cypress_repositories-windows_sha256">windows_sha256</h4> |
| |
| (Optional) SHA-256 of the windows cypress binary |
| |
| Defaults to `""` |
| |
| |
| ## esbuild_repositories |
| |
| **USAGE** |
| |
| <pre> |
| esbuild_repositories(<a href="#esbuild_repositories-npm_repository">npm_repository</a>, <a href="#esbuild_repositories-name">name</a>, <a href="#esbuild_repositories-npm_args">npm_args</a>, <a href="#esbuild_repositories-kwargs">kwargs</a>) |
| </pre> |
| |
| Helper for fetching and setting up the esbuild versions and toolchains |
| |
| This uses Bazel's downloader (via `http_archive`) to fetch the esbuild package |
| from npm, separately from any `npm_install`/`yarn_install` in your WORKSPACE. |
| To configure where the download is from, you make a file containing a rewrite rule like |
| |
| rewrite (registry.nodejs.org)/(.*) artifactory.build.internal.net/artifactory/$1/$2 |
| |
| You can find some documentation on the rewrite patterns in the Bazel sources: |
| [UrlRewriterConfig.java](https://github.com/bazelbuild/bazel/blob/4.2.1/src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/UrlRewriterConfig.java#L66) |
| |
| Then use the `--experimental_downloader_config` Bazel option to point to your file. |
| For example if you created `.bazel_downloader_config` you might add to your `.bazelrc` file: |
| |
| common --experimental_downloader_config=.bazel_downloader_config |
| |
| |
| **PARAMETERS** |
| |
| |
| <h4 id="esbuild_repositories-npm_repository">npm_repository</h4> |
| |
| the name of the repository where the @bazel/esbuild package is installed |
| by npm_install or yarn_install. |
| |
| |
| |
| <h4 id="esbuild_repositories-name">name</h4> |
| |
| currently unused |
| |
| Defaults to `""` |
| |
| <h4 id="esbuild_repositories-npm_args">npm_args</h4> |
| |
| additional args to pass to the npm install rule |
| |
| Defaults to `[]` |
| |
| <h4 id="esbuild_repositories-kwargs">kwargs</h4> |
| |
| additional named parameters to the npm_install rule |
| |
| |
| |
| |