# rules_bun rule reference This file documents the public rules exported from `@rules_bun//bun:defs.bzl`. ## js_binary Runs a JS/TS entry point with Bun behind a `rules_js`-style name. Attributes: - `entry_point` (label, required): path to the main JS/TS file to execute. - `node_modules` (label, optional): package files from a `node_modules` tree, typically produced by `bun_install` or `npm_translate_lock`, made available in runfiles. - `data` (label_list, optional): additional runtime files. - `deps` (label_list, optional): library dependencies required by the program. - `args` (string_list, optional): default arguments appended before command-line arguments passed to the binary. - `working_dir` (string, default: `"workspace"`, values: `"workspace" | "entry_point"`): runtime working directory. ## js_test Runs Bun tests behind a `rules_js`-style name. Attributes: - `srcs` (label_list, required): test source files passed to `bun test`. - `node_modules` (label, optional): package files from a `node_modules` tree, typically produced by `bun_install` or `npm_translate_lock`, made available in runfiles. - `deps` (label_list, optional): library dependencies required by tests. - `data` (label_list, optional): additional runtime files needed by tests. - `args` (string_list, optional): default arguments appended after the test source list. ## js_run_devserver Runs an executable target from a staged JS workspace. Attributes: - `tool` (label, required): executable target to launch as the dev server. - `args` (string_list, optional): default arguments appended before command-line arguments passed to the dev server. - `package_json` (label, optional): package manifest used to resolve the package working directory. - `package_dir_hint` (string, default: `"."`): package-relative directory hint when `package_json` is omitted. - `node_modules` (label, optional): package files from a `node_modules` tree, typically produced by `bun_install` or `npm_translate_lock`, made available in runfiles. - `deps` (label_list, optional): library dependencies required by the dev server. - `data` (label_list, optional): additional runtime files. - `working_dir` (string, default: `"workspace"`, values: `"workspace" | "package"`): runtime working directory. ## bun_binary Runs a JS/TS entry point with Bun as an executable target (`bazel run`). Attributes: - `entry_point` (label, required): path to the main JS/TS file to execute. - `node_modules` (label, optional): package files from a `node_modules` tree, typically produced by `bun_install`, made available in runfiles. - `data` (label_list, optional): additional runtime files. - `deps` (label_list, optional): library dependencies required by the program. - `args` (string_list, optional): default arguments appended before command-line arguments passed to the binary. - `working_dir` (string, default: `"workspace"`, values: `"workspace" | "entry_point"`): runtime working directory. ## bun_dev Runs a JS/TS entry point in Bun development watch mode (`bazel run`). Attributes: - `entry_point` (label, required): path to the main JS/TS file. - `watch_mode` (string, default: `"watch"`, values: `"watch" | "hot"`): Bun live-reload mode. - `restart_on` (label_list, optional): files that trigger full process restart when changed. - `node_modules` (label, optional): package files from a `node_modules` tree, typically produced by `bun_install`, made available in runfiles. - `data` (label_list, optional): additional runtime files for dev process. - `working_dir` (string, default: `"workspace"`, values: `"workspace" | "entry_point"`): runtime working directory. ## bun_script Runs a named `package.json` script with Bun as an executable target (`bazel run`). Recommended for package-script based tools such as Vite (`dev`, `build`, `preview`). When `node_modules` is provided, executables from `node_modules/.bin` are added to `PATH`, so scripts like `vite` work without wrapper scripts. Attributes: - `script` (string, required): package script name passed to `bun run