Bobril - V - Bobril-build
Bobril-build
引言
在之前的文章中,我们使用了一些 `bobril-build` 的基本操作。本文将更详细地介绍 `bobril-build` 的功能。
- Bobril - I - 入门
- Bobril - II - Bobflux 应用程序架构
- Bobril - III - 本地化和格式化
- Bobril - IV - 路由
- Bobril - V - Bobril-build
- Bobril - VI - BobX 应用程序商店管理
- Bobril - VII - 组件和 TSX
`Bobril-build` 是一个基于 Node.js 的构建系统,用于构建使用 Typescript 编写的单页面应用程序,并为 bobril 和 bobril-g11n 提供了许多优化。它虽然是为 bobril 应用程序设计的,但也可用于一般的 TypeScript 应用程序。它由 Boris Letocha(GMC Software Technology 的软件架构师和开发人员)编写。
`Bobril-build` 可以通过命令全局安装:
npm i bobril-build -g
它需要 `node.js >= 6.*.* 和 npm >=3.*.*`。
它可以选择使用 yarn 包管理器(推荐)。如果 yarn 不可用,则使用 `npm`。
`Bobril-build` 为最佳开发者体验做了很多工作。通常,要开始开发,您只需要全局安装 `bobril-build`(只需一次),初始化 `npm` 包,创建一个 *index.ts* 文件,然后运行 `bb` 命令。它会启动一个内存中的自托管服务器(有利于 SSD 驱动器),监视文件更改,运行测试,提供 sourcemaps 等。
但 `bobril-build` 提供了更多功能。它可以执行:
- 运行自托管服务器进行分发。它提供应用程序的主要文件(默认为 *index.ts*)或示例文件(默认为 *example.ts*),如果提供了示例文件。示例主要用于组件。
- 监视更改
- 运行测试,并可选择生成 JUnit XML 格式的结果,以便在构建服务器上进行额外集成
- 编译 typescript
- 安装外部依赖
- 解析内部/外部依赖(导入)
- 转译
- 管理翻译
- Minification
- 创建雪碧图 (sprites)
- 管理资源
- 管理和运行外部 bobril 插件
基本命令
bb
- 以交互模式运行构建。分发文件可通过自托管服务器访问,地址为 https://:8080。文件从内存中提供。构建信息可在 https://:8080/bb 找到。它还会运行测试。要启动另一个测试代理,请在任何浏览器中打开 https://:8080/bb/test。如果您想调试测试,请打开 https://:8080/test.html,任何失败的断言都会抛出异常,因此很容易在它们处停止。
bb -h, --help
- `bobril-build` 的基本帮助
bb <command> -h
- 特定命令的帮助
测试
`Bobril-build` 会运行后缀为 *spec.ts* 的测试文件。它会自动为这些 spec 文件提供 `jasmine.d.ts`。
bb test [options]
- 只在 PhantomJS 中运行测试
选项
-o, --out <name>
- 定义测试结果的 JUnit XML 文件名。您可以使用此文件与 Jenkins 等构建服务器集成
翻译
`Bobril-build` 提供了一套工具来管理翻译。
bb translation|t [options] -
翻译管理
选项
-a, --addlang <lang>
- 向翻译文件夹添加新的语言定义
-r, --removelang <lang>
- 移除语言
-e, --export <fileName>
- 将未翻译的语言导出到特定文件。主要用于翻译机构。请与 `-l` 选项一起使用。每个条目都以以下格式列出:
S:Original message I:Hint T:Translated message
-i, --import <fileName>
- 从特定文件导入已翻译的语言。文件名必须采用 *language-Name.txt* 格式
-p, --specificPath <path>
- 指定导出/导入的路径。
-l, --lang <lang>
- 指定要导出的语言。
-u, --union <sourcePath1,sourcePath2,destinationPath>
- 从路径创建联合。
-s, --subtract <sourcePath1,sourcePath2,destinationPath>
- 从路径创建差集。
要根据您的代码更新翻译文件夹中 *.json* 文件中的项目,您必须使用命令 `bb b -u 1`(有关更多信息,请参阅“构建命令”章节)。
构建命令
Bobril 构建允许通过参数管理构建过程。
bb build|b [options]
- 完全构建,包括所有提到的操作。只构建一次,将生成的文件提供到 dist 文件夹并停止。
选项
-d, --dir <outputdir>
- 定义构建结果的输出目录(默认为 *./dist*)
-f, --fast <1/0>
- 快速可调试的打包。它只是不进行最小化
-c, --compress <1/0>
- 移除死代码
-m, --mangle <1/0>
- 最小化名称
-b, --beautify <1/0>
- 可读格式化
-s, --style <0/1/2>
- 覆盖 `styleDef className` 的保留级别
-p, --sprite <0/1>
- 启用/禁用雪碧图的创建。它会搜索代码中对 `b.sprite` 的使用。
-l, --localize <1/0>
- 创建本地化资源(默认自动检测)。
-u, --updateTranslations <1/0>
- 更新翻译。它会搜索代码中对 `t` 函数(来自 `bobril-g11n`)的使用,并以以下格式更新翻译文件夹中的 *language.json* 文件:
[
"cs-CZ",
[
"Original {text}!",
null,
1,
"Translated {text}!"
]
]
-v, --versiondir <name>
- 将除 *index.html* 以外的所有资源存储在此目录中。它将生成的文件存储在特定文件夹中,并将 *index.html* 链接到这些文件中。用于防止缓存。
插件
`Bobril-build` 允许您使用外部插件(例如,插件),这些插件在 `bobril-build` 过程的最后阶段运行。要管理此类插件,请使用以下命令:
bb plugins [options]
选项
-l, --list
- 列出所有已安装的插件
-i, --install <pluginName>
- 安装新插件
-u, --uninstall <pluginName>
- 卸载特定插件
-s, --link
- 将插件链接到工作区
配置
`Bobril-build` 可以通过 *package.json* 中定义的选项进行配置。
{
"typescript": {
"main": "pathToMain.ts" // index.ts by default
},
"bobril": {
"dir": "name of directory where to place release default is dist",
"resourcesAreRelativeToProjectDir": false, // this is default
"additionalResourcesDirectory":
"path to folder with files, these files will be added to dist",
"example": "pathToExample.ts", // sample application
//entry point - if main is index.ts than example.ts is searched for default
"title": "index.html Title",
"head": "additional tags to head section of index.hml, e.g. <meta>"
"compilerOptions": {
"noImplicitAny": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"strictNullChecks": true,
},
"prefixStyleDefs": undefined, // prefix for generated styles
"constantOverrides": {
"module_name": {
"export_name": "New value, it supports also
number and boolean values" // allows to override constants
// exported from npm packages
}
},
"dependencies": "install", // "disable" = no yarn at start,
// "install" = yarn install, "upgrade" = yarn upgrade
"plugins": {
"pluginName": {
"configKey":
"configValue" // provides configuration for installed bobril plugins
}
}
}
}
调试模式
您可以在代码中根据 `DEBUG` 标志有条件地运行某些代码。
只需在您的模块中添加以下代码:
declare let DEBUG: boolean;
然后 `bobril-build` 会将该变量赋值为一个字符串,指示您是在调试模式(`bb`)还是在生产代码(
`bb b`)中运行。
历史
- 2016-01-29: 文章创建