# @firestitch/app-tools 中文文档

规范地址：https://npmcn.com/package/%40firestitch/app-tools/

版本：18\.2\.10
npm 元数据更新时间：2026-11-08T01:14:04.040Z
中文译文更新时间：2026-11-14T19:54:32.042Z
软件包许可：未声明

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40firestitch/app-tools
原文对照：https://npmcn.com/package/%40firestitch/app-tools/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：109 kB，34 个文件
- TypeScript 类型：未声明
- 运行依赖：3 个
- 首次发布：2022-03-29T11:25:49.867Z
- 最新版本发布：2026-11-08T01:14:03.856Z
- 近 30 天下载量：3137（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：101（近 12 个月 25 个）

## 中文简介

`npm run serve [args]`

## 安装

```sh
npm install @firestitch/app-tools
```

也可以使用：`pnpm add @firestitch/app-tools`、`yarn add @firestitch/app-tools`、`bun add @firestitch/app-tools`

## README

# 服务

`npm run serve [args]`

| 参数 | 数值 | 默认 |
| --- | --- | --- |
| \--env 数据 | 字符串 | 当地 |
| 项目 | 字符串 | 第一个工程在 angular.json 中 |
| \--端口 | 编号 | 软件包.json = 配置 = 端口 |
| \-- 主机 | 字符串 | 项目的角.json 服务 选择 东道主,其他 `<package name>.local.firestitch.com` |
| \-- 安全 | 布尔 | 虚假 |
| \-- live- 重载 | 布尔 | 虚假 |

# 构建

`npm run build [args]`

| 参数 | 数值 | 默认 |
| --- | --- | --- |
| \--env 数据 | 字符串 | 备忘 |

# 软件包

`npm run package [args]`

| 参数 | 数值 | 默认 |
| --- | --- | --- |
| \--env 数据 | 字符串 | 生产 |
| 包括 | 逗号分隔路径 | 替换基数集 `frontend/dist,backend,framework,maintenance` |
| 包含 | 逗号分隔路径 | 在基数组之上添加额外值 |
| \-- 预建 | JS 文件或 shell 命令 | 在构建前运行 |
| \--后营建 | JS 文件或 shell 命令 | 运行在建设之后, 在拉链之前 |
| \--版本 | 当前、补丁、次要、主要或x.y.z | 该版本,不包含提示 |

`--version=current` 软件包已装入软件包 由同名 repo 所建的应用程序带有与第一个版本相同的版本. 重新包装于 同一版本没有承诺、推动和标记:

```
"package:client": "npx package --project=client --version=current --include=frontend/dist"
```

把旗子放入剧本本身. `npm run package --version=…` 把它交给npm, 用于打印自己的版本.

版本是先选的,在建成成功之前,什么都不写,所以 失败的构建使工作树未受影响 :

```
native level check → select version → ng build → write package.json → --postBuild → zip → commit, push, tag
```

## 钩子

`--preBuild` 财务报告和审定财务报表 `--postBuild` 每一个 **无论是** jS文件的路径,即 `require()`d , (单位:千美元), **或者说** 弹壳命令 :

```
npx package --postBuild="cd mcp && npm run sync-version && npm publish"
npx build --preBuild=./scripts/generate-icons.js
```

没有空格的空路被视为文件; 其它的都会被当作文件运行 命令 (`node build.js` 是命令,不是文件。 退出的外壳钩子 非零中止运行; JS 钩子不能失败运行,因为 `require()` 返回任何要检查的内容.

| 钩子 | 何时 |
| --- | --- |
| \-- 预建 | 在此之前 `ng build` |
| \--后营建 | 之后 `ng build` ——在套件运行中,在版本被写入后,在拉链与承诺之前 |

在一个 `package` 运行 `--postBuild` 被推迟到新版本生效 `package.json`,并运行于实例目录(其父目录 `frontend`(中文(简体) ) 该版本在 `$VERSION`。这是侧车包可以 使用应用软件的版本并发布自己 —— 足够早,它的版本凸起是 被拉入这栋大楼 并被卷入同样的承诺和标签 与它的应用 早早的 以失败阻止释放 犯罪或被标记.

# 土著一级

`npx native-level [args]`

| 参数 | 数值 | 默认 |
| --- | --- | --- |
| 项目 | 字符串 | 第一个工程在 angular.json 中 |

A Capacitor app 的网络构建载具 `src/assets/native.json`。电话安装 空外的网络捆绑只有在捆绑的时候 `level` 不高于级别 它的存储架构被运出, 所以需要新本地插件的网络代码永远不会 到达一个二进制没有它。 只有在水平上升时才有用 本地插件更改, 所以 `build` 财务报告和审定财务报表 `package` 拒绝逃跑直到它成功.

原生. json 记录原生插件的级别被提高为:

```json
{
  "level": 2,
  "plugins": {
    "@capacitor/android": "6.0.0",
    "@capacitor/app": "6.0.2",
    "@capacitor/ios": "6.0.0",
    "capacitor-local-plugin": "1.0.0+3f9a0c27b1d4"
  }
}
```

-   **应用程序根** 是项目源头或上方最近的目录 持有 `capacitor.config.ts`, (中文(简体) ), `.js` 或者说 `.json` - 在哪个地方 `npx cap sync` 运行.
-   **本地插件** 在应用程序根的依赖性 `package.json` 个人 `package.json` - 安装在应用根的 `node_modules` 或任何父母的.. 有一个 `capacitor` 或者说 `cordova` 键,加上运行时间 `@capacitor/ios` 财务报告和审定财务报表 `@capacitor/android`,这些名称是本地的,不需要安装副本.
-   **其价值** 是应用程序根的版本 `package-lock.json` 针:什么 `npm ci` 安装在那里之前 `npx cap sync` 构建商店二进制 。 写着 在开发商的机器上和在CI代理上都是一样的,它只安装 app root上方的工作空间,其副本可以是其他版本. 没有 在app root中锁定文件,所安装的版本则被录入.
-   **A 类 `file:` 插件**原生源的更改不改变版本,所以 它记录自己的 `package.json` 版本加a的前12个正数 SHA -256号机 `package.json`词根 `*.podspec`, (中文(简体) ), `ios/` 财务报告和审定财务报表 `android/` —— 说 构建产出( e)`node_modules`, (中文(简体) ), `build`, (中文(简体) ), `.gradle`, (中文(简体) ), `Pods`, (中文(简体) ), `dist`跳过和 行尾读作LF,因此Windows和Linux同意.

开始时 `npx build` 财务报告和审定财务报表 `npx package` 在项目之前 已建或请求版本 :

| 土生土长. json | 发生什么事 |
| --- | --- |
| 没有 `plugins` 现在 | 插件被记录在当前关卡中; 承诺本地. json |
| `plugins` 匹配 | 无 |
| `plugins` 差异 | ,将每个插件添加、删除或更改 |

一个被拒绝的运行名 :

```
npx native-level --project=client
```

它将关卡提高一个,记录插件,并打印旧和 随着插件的更改而新建关卡。 将移动的更改提交本地.json 插件; 手机仅在商店上使用所建的网络代码 新建关卡.

应用程序根的本地依赖缺失 `package-lock.json` 运行失败 : 运行 `npm install` 在应用根中更新它。 一个叫 包含 `capacitor` 或者说 `cordova` 但是没有安装,因为什么也没有说 是否为本地软件:先安装软件包.

没有的项目 `src/assets/native.json`或者上面没有电容 未检查.

# 内部

[四、建 议](https://npmcn.com/package/%40firestitch/app-tools/ARCHITECTURE.md) ——每个文件都做什么,包订购 限制和陷阱 `package.json`, (中文(简体) ), `process.exit` 关于失败, 除非订阅,否则从不运行的可观测数据).

# SSL 服务器

`npx ssl [command]`

| 命令 | 说明 |
| --- | --- |
| 资讯 | 显示证书主机、 过期以及 CA 是否可信( 默认) |
| 信托 | 将开发根 CA 安装到此机器的信托商店 |
| 不信任 | 再来一次 |
| 重新发行 | 只重发证书, 例如编辑其主机名后 。 无需重新信任 |
| 生成 | 重新发布 CA _财务报告和审定财务报表_ 证书。 强制每个开发者重运行 `trust` |

`serve --secure` 用途 `ssl/localhost.crt`报告 **Firestitch 开发根 CA** 且对 `localhost`, (中文(简体) ), `local.firestitch.com` 财务报告和审定财务报表 `*.local.firestitch.com`。 。 。 .

它故意没有IP地址。 BoringSSL (在 Bun 的 TLS 堆栈, 在 Claude 的等) 代码)无法对照 CA 的名称限制检查一个 IP 条目并拒绝整个 证书为 `unsupported name constraint type`,即使通过主机名连接。 使用 `https://localhost`没有 `https://127.0.0.1`。 。 。 .

浏览器只信任一个证书,其签发者在机器的信托商店,所以每个 开发者运行 **`npx ssl trust` 每台机器一次** 以获取一个挂锁而不是 "你的连接不是私人的" 中断。 Windows 将显示一次性安全 确认;接受。 随后重新启动浏览器 .

Chrome, Edge和Firefox 都从 Windows 商店取取 CA —— Firefox 启用 `security.enterprise_roots.enabled` 默认的。 在macOS和Linux上,Firefox使用它 改为自有商店, 因此导入 `ssl/ca.crt` 设置 → 隐私和安全 → 证书.

Firefox 验证证书比 Chrome 严格得多, 因为此证书 名称限制它解析 _每个_ 主题替代名称,而不仅仅是它的名称 正在匹配。 因此,一个条目Firefox不喜欢拒绝整个证书 `SEC_ERROR_BAD_DER` 每个主机。 保持主机名列表保守, 在更改后 运行 `npx ssl reissue` 检查Firefox的结果 不只是Chrome.

CA私人密钥船在这批货中公开,这是可以接受的,因为CA 携带一个关键 **名称限制** 扩展将其限制在以上主机。 一个机器 相信此根仍然拒绝它为任何其他域签发的证书,所以 键不能用来拦截真实流量。 永远不要在开发之外再利用它.

证书于2036年到期,CA于2046年到期. 要重发, 运行 `npx ssl generate` —— 说 更改 CA 表示每个开发者必须重新运行 `npx ssl trust`,因此倾向于添加主机名 下级 `*.local.firestitch.com` (由现有证书覆盖)取而代之.

## 常见问题

### @firestitch/app-tools 是什么？

npm run serve \[args\]

### 如何安装 @firestitch/app-tools？

在项目目录运行 npm install @firestitch/app-tools，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 ssl、build、serve、package、native-level，可以用 npx ssl 直接运行。

### @firestitch/app-tools 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/firestitch\_\_app-tools 是否存在。

### @firestitch/app-tools 可以商用吗？

@firestitch/app-tools 使用 未声明 许可。package\.json 没有声明许可证。没有许可证的代码默认保留全部权利，商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括，不构成法律意见，请以许可原文为准。

### @firestitch/app-tools 的下载量有多少？

根据 npm 官方下载统计，@firestitch/app-tools 在 2026/10/15 – 2026/11/13 这 30 天内被下载 3,137 次，日均约 105 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @firestitch/app-tools 还在维护吗？

最新版本 18\.2\.10 发布于 2026/11/08（6 天前）；至今共发布 101 个版本，其中过去 12 个月发布了 25 个；首次发布于 2022/03/29。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

