Skip to content

Latest commit

 

History

History
195 lines (141 loc) · 10.1 KB

webpack.md

File metadata and controls

195 lines (141 loc) · 10.1 KB

Webpack

Webpack bundles modules into one or more files.

Guide

Example

lib.js

export const a = "apple";

main.js

import { a } from "./lib";

console.log(a);

webpack.config.js

module.exports = {
  entry: "./main.js",
};

BUILD.bzl

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

webpack_bundle(
    name = "bundle",
    dep = ":b",
    root = ":root",
    webpack = ":webpack",
)

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

cjs_root(
  name = "root",
)

configure_webpack(
    name = "webpack",
    config = "webpack.config.js",
    config_dep = ":webpack_config",
)

js_library(
    name = "webpack_config",
    root = ":root",
    srcs = ["webpack.config.js"],
)

//webpack:providers.bzl

WebpackInfo

WebpackInfo(bin, server, client_cjs, client_js, config_path)

Webpack configuration

FIELDS

Name Description
bin Webpack executable
server Webpack server executable
client_cjs Webpack dev server lib
client_js Webpack dev server lib
config_path Config path

//webpack:rules.bzl

webpack

webpack(name, bin, client, config, config_dep, language, module, server)

Webpack tools

ATTRIBUTES

Name Description Type Mandatory Default
name A unique name for this target. Name required
bin Webpack executable Label required
client - List of labels required
config - String required
config_dep - Label required
language - String optional "es2020"
module - String optional "esnext"
server - Label required

webpack_bundle

webpack_bundle(name, dep, output, root, webpack)

Webpack bundle

ATTRIBUTES

Name Description Type Mandatory Default
name A unique name for this target. Name required
dep JavaScript dependencies Label required
output Output directory. Defaults to the name of the rule String optional ""
root CommonJS package root Label required
webpack Webpack tools Label required

webpack_server

webpack_server(name, dep, language, module, webpack)

Run a webpack server

ATTRIBUTES

Name Description Type Mandatory Default
name A unique name for this target. Name required
dep JavaScript dependencies Label required
language - String optional ""
module - String optional "esnext"
webpack Webpack tools Label required

configure_webpack

configure_webpack(name, config, config_dep, cli, webpack, dev_server, node_options, visibility)

Set up webpack tools.

PARAMETERS

Name Description Default Value
name Name none
config Configuration path none
config_dep Configuration library none
cli Webpack CLI library "@better_rules_javascript//webpack:webpack_cli"
webpack Webpack library "@better_rules_javascript//webpack"
dev_server Webpack dev server library "@better_rules_javascript//webpack:webpack_dev_server"
node_options Node.js options []
visibility Visibility None