Skip to content

Latest commit

 

History

History
228 lines (156 loc) · 9.38 KB

File metadata and controls

228 lines (156 loc) · 9.38 KB

JavaScript

JavaScript libraries are JavaScript files and their dependencies.

Each JS library is within a CommonJS root. For discussion on JS module resolution, see Module Resolution.

Guide

Module

The module type is requested using the //javascript:module setting.

Language version is requested using the //javascript:language setting.

Examples:

  • Module type is set via transform by nodejs_binary to be node
  • Module type is used by the ts_library to set the module compiler option.

js_library does not enforce that files adhere to this requirement, or automatically transform them. Modules should already be in a verion and format compatible with the final bundler or runtime.

Example

package.json

{}

lib.js

export const text = "Hello world";

main.js

import { text } from "./a";

console.log(text);

BAZEL.build

load("@better_rules_javascript//commonjs:rules.bzl", "cjs_root")
load("@better_rules_javascript//javascript:rules.bzl", "js_library")

cjs_root(
    name = "root",
    descriptor = "package.json",
)

js_library(
    name = "lib",
    root = ":root",
    srcs = ["lib.js"],
)

js_library(
    name = "main",
    deps = [":lib"],
    root = ":root",
    srcs = ["main.js"],
)

//javascript:providers.bzl

JsInfo

JsInfo(transitive_files)

JavaScript

FIELDS

Name Description
transitive_files Depset of files (descriptors, JavaScript, data files)

create_js_info

create_js_info(cjs_root, files, deps)

PARAMETERS

Name Description Default Value
cjs_root

-

none
files

-

[]
deps

-

[]

js_npm_inner_label

js_npm_inner_label(repo)

PARAMETERS

Name Description Default Value
repo

-

none

js_npm_label

js_npm_label(repo)

PARAMETERS

Name Description Default Value
repo

-

none

//javascript:rules.bzl

js_export

js_export(name, dep, deps, extra_deps, global_deps, package_name)

Add dependencies, or use alias.

ATTRIBUTES

Name Description Type Mandatory Default
name A unique name for this target. Name required
dep JavaScript library. Label required
deps Dependencies to add. List of labels optional []
extra_deps Extra dependencies to add. List of labels optional []
global_deps Global dependencies to add. List of labels optional []
package_name Dependency name. Defaults to root's name. String optional ""

js_library

js_library(name, data, deps, global_deps, prefix, root, srcs, strip_prefix)

JavaScript library

ATTRIBUTES

Name Description Type Mandatory Default
name A unique name for this target. Name required
data Runfile files. These are added to normal runfiles tree, not CommonJS packages. List of labels optional []
deps Dependencies. List of labels optional []
global_deps Global dependencies. List of labels optional []
prefix Prefix to add. String optional ""
root - Label optional None
srcs JavaScript files and data. List of labels optional []
strip_prefix Package-relative prefix to remove. String optional ""

//javascript:workspace.bzl

js_directory_npm_plugin

js_directory_npm_plugin()

js_npm_plugin

js_npm_plugin(exclude_suffixes)

PARAMETERS

Name Description Default Value
exclude_suffixes

-

[]