Bazel Closure Rules 使用教程
rules_closureClosure rules for Bazel项目地址:https://gitcode.com/gh_mirrors/ru/rules_closure
1. 项目介绍
Bazel Closure Rules 是一个用于 Bazel 构建系统的规则集合,专门用于处理 Google Closure 工具链中的各种资源。Closure 工具链包括 Closure Compiler、Closure Library、Closure Templates 等,这些工具可以帮助开发者编写高效、安全且易于维护的 JavaScript 代码。
Bazel Closure Rules 的主要功能包括:
- 编译 Closure 模板为 JavaScript 源文件。
- 生成从
.proto
文件到 JavaScript 代码的转换。 - 支持 Closure 样式表(GSS)的编译。
- 提供 PhantomJS 测试运行器。
2. 项目快速启动
2.1 安装 Bazel
首先,确保你已经安装了 Bazel。如果尚未安装,可以参考 Bazel 官方安装指南 进行安装。
2.2 克隆项目
git clone https://github.com/bazelbuild/rules_closure.git
cd rules_closure
2.3 添加 WORKSPACE 文件
在你的项目根目录下创建一个 WORKSPACE
文件,并添加以下内容:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "io_bazel_rules_closure",
sha256 = "5c1f37c4c462f54f6c97f4d4c37c0b062c774756e7078e3e790d2a3f00f244bb",
strip_prefix = "rules_closure-0.11.0",
urls = [
"https://github.com/bazelbuild/rules_closure/archive/0.11.0.tar.gz",
],
)
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_repositories")
closure_repositories()
2.4 创建 BUILD 文件
在项目根目录下创建一个 BUILD
文件,并添加以下内容:
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_library")
closure_js_library(
name = "my_closure_lib",
srcs = ["my_script.js"],
deps = ["@io_bazel_rules_closure//closure/library"],
)
2.5 编写 JavaScript 文件
在项目根目录下创建一个 my_script.js
文件,并添加以下内容:
goog.provide('my.namespace');
my.namespace.sayHello = function() {
console.log('Hello, Closure!');
};
2.6 构建项目
bazel build //:my_closure_lib
3. 应用案例和最佳实践
3.1 使用 Closure Templates
Closure Templates 是一种用于生成 HTML 的模板语言。通过 Bazel Closure Rules,你可以轻松地将 Closure Templates 编译为 JavaScript 代码。
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_template_library")
closure_js_template_library(
name = "my_template",
srcs = ["my_template.soy"],
)
3.2 使用 Closure Compiler
Closure Compiler 是一个强大的 JavaScript 优化工具,可以对代码进行压缩、混淆和优化。通过 Bazel Closure Rules,你可以轻松地将 Closure Compiler 集成到你的构建流程中。
load("@io_bazel_rules_closure//closure:defs.bzl", "closure_js_binary")
closure_js_binary(
name = "my_binary",
deps = [":my_closure_lib"],
)
4. 典型生态项目
4.1 Closure Library
Closure Library 是一个广泛使用的 JavaScript 库,提供了大量的实用工具和组件,帮助开发者构建复杂的 Web 应用。
4.2 Closure Templates
Closure Templates 是一个模板系统,用于生成 HTML 和其他文本格式。它支持国际化和多语言,非常适合构建动态内容。
4.3 Closure Compiler
Closure Compiler 是一个 JavaScript 优化工具,可以对代码进行压缩、混淆和优化,提高代码的执行效率和安全性。
通过 Bazel Closure Rules,你可以轻松地将这些工具集成到你的项目中,构建高效、安全的 Web 应用。
rules_closureClosure rules for Bazel项目地址:https://gitcode.com/gh_mirrors/ru/rules_closure