NODE_VERSION = "22.21.1" # ======================================================================================== # Node.js bootstrap # # workerd uses Node.js scripts for generating TypeScript types. node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") node.toolchain( node_urls = [ # github workflows may substitute a mirror URL here to avoid fetch failures. # "WORKERS_MIRROR_URL/https://nodejs.org/dist/v{version}/{filename}", "https://nodejs.org/dist/v{version}/{filename}", ], node_version = NODE_VERSION, ) npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm") npm.npm_translate_lock( name = "npm", bins = { # Expose CLI binaries for OpenNext builds "esbuild": ["esbuild=bin/esbuild"], "next": ["next=./dist/bin/next"], "wrangler": ["wrangler=bin/wrangler.js"], }, data = [ "//:package.json", "//:pnpm-workspace.yaml", "//images/container-client-test:package.json", "//src/workerd/api/tests/opennextjs/src:package.json", ], npmrc = "//:.npmrc", pnpm_lock = "//:pnpm-lock.yaml", verify_node_modules_ignored = "//:.bazelignore", ) use_repo(npm, "npm") rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext") rules_ts_ext.deps( # This keeps the TypeScript version in-sync with the editor, which is typically best. ts_version_from = "//:package.json", ) use_repo(rules_ts_ext, "npm_typescript")