什么是 builder-util
builder-util 是一个由 electron-builder 开发的 npm 包,它包含了一系列前端构建、打包、发布的常用工具函数,方便我们在项目中快速使用。它适用于 Node.js 和浏览器环境,并且可以和 Gulp、Webpack 等构建工具无缝集成。
安装
使用 npm 安装:
--- ------- ------------ ----------
常用 API
1. exec()
exec() 函数返回一个 Promise 对象,用于执行指定的命令或脚本。它支持以下参数:
command: 要执行的命令或脚本。
args (可选): 命令或脚本的参数,数组类型。
options (可选): 执行选项,对象类型。支持以下字段:
- cwd: 命令或脚本的执行目录,默认为 process.cwd()。
- env: 环境变量,对象类型。默认为 process.env。
- stdout: 标准输出流,默认为 process.stdout。
- stderr: 标准错误流,默认为 process.stderr。
- stdin: 标准输入流,默认为 process.stdin。
- encoding: 输出流的编码,默认为 'utf8'。
- windowsHide: 是否隐藏窗口(Windows 平台),默认为 true。
示例代码:
----- ----------- - ----------------------- ----------------------- --------- ---------------------------------------- -------- -- - ---------------- ----- ---------- -- ------------ -- - ------------------ ----- -------- ---- --
2. toLinuxArchName()
toLinuxArchName() 函数返回指定架构在 Linux 平台下对应的名称。它支持以下参数:
- arch: 要转换的架构名称,比如 x64。
- defaultTarget (可选): 默认值,如果指定的架构不在可选列表中,则返回默认值。默认值为 'x86'。
示例代码:
----- ----------- - ----------------------- ---------------------------------- -- -- ------- ------------------------------------ -- -- ------- ----------------------------------- -- -- ------ ---------------------------------- -- -- -------
3. safeStringifyJson()
safeStringifyJson() 函数返回序列化后的 JSON 字符串,可以避免循环引用和重复序列化。它支持以下参数:
object: 要序列化的对象。
options (可选): 序列化选项,对象类型。支持以下字段:
- replacer: 替换器函数,可选。
- space: 空格缩进数,可选。
示例代码:
----- ----------- - ----------------------- ----- --- - - ---- --- -- --- ---- - ---- ------- - - ------- - --- -- ------ ---------------------------------- -- -- ---------------- -------- --------- -- ---- ---------------------------------- - --------- ----- ------ - -- -- --- - ------ - -- -- - -- ------ - ------ ------- -- ------ ------------ - --
4. hashFile()
hashFile() 函数返回一个 Promise 对象,用于计算指定文件的哈希值。它支持以下参数:
- file: 要计算哈希值的文件路径。
- algorithm (可选): 哈希算法,默认为 'sha512'。
- encoding (可选): 哈希值编码,默认为 'base64'。
示例代码:
----- ----------- - ----------------------- ------------------------------------- ------------ -- - ----------------- ------- ----- -- ------------ -- - ------------------- ---- -------- ---- --
5. async function
builder-util 还提供了一些 async 函数方便我们使用。比如:
5.1. AsyncTaskManager
AsyncTaskManager 类用于管理异步任务,它支持以下方法:
- add(task: () => Promise): void:添加一个异步任务。
- addTask(task: () => Promise): void:同 add() 方法。
- addTask(task: (c: (message: Message) => void, o: (m: Message) => void) => Promise): void:添加一个支持发送进度消息的异步任务。
- addTask(task: () => Promise, options?: AsyncTaskOptions): void:添加一个支持设置超时时间、重试以及发送进度消息的异步任务。
- cancel(): void:取消所有任务。
- awaitTasksDone(): Promise:等待所有任务完成。
示例代码:
----- ----------- - ----------------------- ----- ----------- - --- ------------------------------ --------------------- -- -- - ----- ----------- ----------------- - ----------- -- ----------------------- -- -- - ------------- -- - ----------- ------ -- ----- ------------- -- - ----------- ------ -- ----- ------------- -- - ------- - ----------- -- ----- -- ------------------------- -- -- - ----- ----------- ----------------- - ----------- -- - -------- ------ -- ------ -------- -- -- ------ -- ---------------------------- -------- -- - ---------------- ----- ----------- -- ------------ -- - ------------------- ------- -------- ---- --
5.2. executeAppBuilder()
executeAppBuilder() 函数用于调用 electron-builder 中的 app-builder 命令行工具,它支持以下参数:
args: 命令行参数,数组类型。
options (可选): 执行选项,对象类型。支持以下字段:
- dist: 构建输出目录,默认为 'dist'。
- projectDir: 项目目录,默认为 process.cwd()。
- config: 配置文件路径,默认为 'electron-builder.yml' 或 'electron-builder.json'。
- effectiveOptionComputed: 配置选项计算函数,可选。
- extraMetadata: 附加元数据,对象类型。
- prepackaged: 打包好的目录或文件路径,可选。
- executeBeforeBuild: 构建前执行的脚本,可选。
- executeAfterBuild: 构建后执行的脚本,可选。
示例代码:
----- ----------- - ----------------------- --------------------------------------- ------ ---------- -------- -- - ------------------- ------- ----- ---------- -- ------------ -- - --------------------- ------- ----- -------- ---- --
总结
通过本文,我们了解了如何使用 builder-util 这个 npm 包来加速前端项目的构建、打包和发布。我们学习了 exec()、toLinuxArchName()、safeStringifyJson()、hashFile() 和 AsyncTaskManager 等常用 API,以及 executeAppBuilder() 函数的使用。使用这些工具,我们可以更加轻松地完成项目中的各种构建任务,提高开发效率。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/57033