65.9K
CodeProject 正在变化。 阅读更多。
Home

Bobril - V - Bobril-build

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2017 年 1 月 29 日

CPOL

5分钟阅读

viewsIcon

14640

Bobril-build

引言

在之前的文章中,我们使用了一些 `bobril-build` 的基本操作。本文将更详细地介绍 `bobril-build` 的功能。

`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` 提供了更多功能。它可以执行:

  1. 运行自托管服务器进行分发。它提供应用程序的主要文件(默认为 *index.ts*)或示例文件(默认为 *example.ts*),如果提供了示例文件。示例主要用于组件。
  2. 监视更改
  3. 运行测试,并可选择生成 JUnit XML 格式的结果,以便在构建服务器上进行额外集成
  4. 编译 typescript
  5. 安装外部依赖
  6. 解析内部/外部依赖(导入)
  7. 转译
  8. 管理翻译
  9. Minification
  10. 创建雪碧图 (sprites)
  11. 管理资源
  12. 管理和运行外部 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: 文章创建
© . All rights reserved.