repositories
Repository rules for fetching the swc toolchain.
For typical usage, see the snippets provided in the rules_swc release notes.
Version matching
To keep the swc version in sync with non-Bazel tooling, use swc_version_from
.
Currently this only works when a single, pinned version appears, see: https://github.com/aspect-build/rules_ts/issues/308
For example, package.json
:
{
"devDependencies": {
"@swc/core": "1.3.37"
}
}
Allows this in WORKSPACE
:
swc_register_toolchains(
name = "swc",
swc_version_from = "//:package.json",
)
Repository Rules
swc_repositories
Fetch external dependencies needed to run the SWC cli
Example usage (generated):
load("@aspect_rules_swc//swc:repositories.bzl", "swc_repositories")
swc_repositories(
# A unique name for this repository.
name = "",
platform = "",
)
name
Required name.
A unique name for this repository.
repo_mapping
Optional dictionary: String → String.
In WORKSPACE
context only: a dictionary from local repository name to global repository name. This allows controls over workspace dependency resolution for dependencies of this repository.
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
).
This attribute is not supported in MODULE.bazel
context (when invoking a repository rule inside a module extension's implementation function).
swc_version
Optional string.
Default: ""
Explicit version. If provided, the package.json is not read.
swc_version_from
Optional label.
Default: None
Location of package.json which has a version for @swc/core.
platform
Required string.
integrity_hashes
Optional dictionary: String → String.
Default: {}
A mapping from platform to integrity hash.
Macros and Functions
swc_register_toolchains
Convenience macro for users which does typical setup.
- create a repository for each built-in platform like "swc_linux_amd64"
- create a repository exposing toolchains for each platform like "swc_platforms"
- register a toolchain pointing at each platform Users can avoid this macro and do these steps themselves, if they want more control.
Example usage (generated):
load("@aspect_rules_swc//swc:repositories.bzl", "swc_register_toolchains")
swc_register_toolchains(
# base name for all created repos; we recommend `swc`
name = "",
)
name
Required.
base name for all created repos; we recommend swc
swc_version
Optional. Default: None
version of the swc project, from https://github.com/swc-project/swc/releases
Exactly one of swc_version
or swc_version_from
must be set.
swc_version_from
Optional. Default: None
label of a json file (typically package.json
) which declares an exact @swc/core
version
in a dependencies or devDependencies property.
Exactly one of swc_version
or swc_version_from
must be set.
register
Optional. Default: True
whether to call through to native.register_toolchains. Should be True for WORKSPACE users, but false when used under bzlmod extension
kwargs
Optional.
passed to each swc_repositories call