# @12-apps/feature-flags 中文文档

规范地址：https://npmcn.com/package/%4012-apps/feature-flags/

版本：2\.4\.1
npm 元数据更新时间：2026-08-25T02:27:05.600Z
中文译文更新时间：2026-11-05T20:05:34.126Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%4012-apps/feature-flags
原文对照：https://npmcn.com/package/%4012-apps/feature-flags/?lang=original
项目主页：https://github.com/12-apps/shared-packages#readme
源码仓库：https://github.com/12-apps/shared-packages

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

- 包体积（解压后）：111 kB，52 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.0\.0
- 运行依赖：0 个
- peer 依赖：react ^18\.0\.0 \|\| ^19\.0\.0，playwright-bdd \>=8\.0\.0，@12-apps/wiring \>=1\.0\.0，@playwright/test \>=1\.40\.0
- 首次发布：2026-08-20T19:14:54.844Z
- 最新版本发布：2026-08-25T02:27:05.234Z
- 近 30 天下载量：32186（2026-10-04 至 2026-11-02，npm 官方下载统计）
- 已发布版本数：11（近 12 个月 11 个）

## 中文简介

用户级特征旗帜:每个用户的β赠款由租户轴上的一个VEIL组成——从来没有经过它们的关键. 核心读取器(.),框架中性超admin管理端点(./服务器),管理屏幕(./反应),接线表(./明显\*),以及

## 安装

```sh
npm install @12-apps/feature-flags
```

也可以使用：`pnpm add @12-apps/feature-flags`、`yarn add @12-apps/feature-flags`、`bun add @12-apps/feature-flags`

## README

# @ 12- 应用程序/ 地标

用户级功能旗:一个超级admin将一个功能赋予个人的β **人员** ——一地主和一地一地一地的几个用户——只看到.

## 一条规则:一面旗帜是面纱,从来不是钥匙

国旗由 **和** 在主机的每个轴上 只能这样 _缩窄_ 可见度;它从未开启一个特征 租户的计划, 生命周期状态,自设设置或RBAC关闭. 有两个后果:

-   **赠款是全球用户的,是安全的.** 补助金按个人发放,以及 在一个店里,租客斧头否认这个特征, 赠款灯光什么也没有—— 这正是为什么不需要每十年补助金一栏.
-   **面纱没有关闭.** 缺失、 停滞或卸载失败的旗帜 隐藏特性 。 这是 _相对_ b. 减少应享待遇 规则(未解锁 qq), 故意解锁 : stale 客户端绝对不能 不得泄露未释放的.

在源主机中,服务器侧顺序是 `401 auth → 403 RBAC → flag veil → 402 entitlements` - 面纱坐在权利堆放之前 所以没有人是 提升一个尚不能购买的特性.

## 何所住处

-   **赠款** 生活在数据库中 : `user_feature_grants`,每行一行 (用户,旗帜),无行 = 该旗帜默认(关闭), `enabled: false` = 一个 明确的选择退出,在未来的默认推出中存活下来. `user_id` 是一个 by-value scalar——没有将FK输入主机表格(支付后端学说).
-   **目录** 是HOST CODE,作为配置提交。 没有代码的旗帜 它的后方却一无所为——每艘旗舰都有部署。 补助金 他的钥匙留下目录 **孤儿**:管理层报告 表面,读者看不见.
-   **每言为主.** 银幕 `copy` (单位:千美元)`FeatureFlagsCopy`和 路线的拒绝判决`FeatureFlagsServerCopy`)为需要配置 没有默认的 — 软件包没有沉默语言, 服务器 组装失败, 无法命名每个缺失的密钥 。 pt-BR 仍为舰只,作为命名包 (单位:千美元)`PT_BR_FEATURE_FLAGS_COPY` 从 `./react`, (中文(简体) ), `PT_BR_FEATURE_FLAGS_SERVER_COPY` 从 `./server`: 主机导入一个和 因此,选择语言是可审查的行。 这个 机器 `error` 代码( e)`unknown_flag`, (中文(简体) ), `user_not_found`)是马厩 半个客户端可以切入 旁边的句子是主机的.

## 表面

| 子路径 | 导出 | 这是什么 |
| --- | --- | --- |
| `.` | `createFlagReader` | 执行部分 `flagsFor(userId)` 用于主机门 |
| `./server` | `createApiFeatureFlags` | 超admin管理表面的6个框架中立路由描述符(线形) |
| `./react` | `createWebFeatureFlags` | 管理屏幕, `{ page }` |
| `./manifest`, (中文(简体) ), `./manifest/server`, (中文(简体) ), `./manifest/web` | 线条清单 | 通过 `@12-apps/wiring/consumer` |

名单中故意缺席: **没有 `mcp`** (表面仅为浏览器) ——超级持卡人已经继承了跨租户对共享工具的接触) 财务报告和审定财务报表 **没有 `permissions`** (原主机中的平台权威是一个掩体) 许可列表 id 无法表达).

## 收养草图(服务器)

```ts
import { createWiringHost } from '@12-apps/wiring/consumer';
import { featureFlagsManifest } from '@12-apps/feature-flags/manifest';
import { featureFlagsServerManifest } from '@12-apps/feature-flags/manifest/server';

const host = createWiringHost({ name: 'my-host', kind: 'server' });
host.adoptServer({
  manifest: featureFlagsManifest,
  server: featureFlagsServerManifest,
  bindings: {
    http: {
      mountPath: '/api/platform/feature-flags',
      // `copy` is every denial sentence — required; pass a named pack or
      // your own object.
      config: { db, catalog, directory, copy, audit },
    },
  },
});
const wired = host.assemble();
```

主机在任何操作员运行前解决演员(其超守门员); 演员是 `{ email }` ——审计身份,不是授权输入. 路由订单为有载量的订单调度器(`/users/:userId` 在此之前 `/:key/…`),以及 `assertCatalog` 拒绝命名的旗帜 `users` 这么说 静态部分永远无法被吞噬.

## 普里斯马

`prisma/feature-flags.prisma` 被复制到主机中 —— 永远不能对齐 —— 计划文件夹由 `pnpm --filter @12-apps/feature-flags prisma:sync` (单位:千美元)`--check` 船闸漂移). 迁移是由宿主发现的 插件同步从 `prisma/migrations/`。 。 。 .

## 常见问题

### @12-apps/feature-flags 是什么？

用户级特征旗帜:每个用户的β赠款由租户轴上的一个VEIL组成——从来没有经过它们的关键\. 核心读取器\(\.\),框架中性超admin管理端点\(\./服务器\),管理屏幕\(\./反应\),接线表\(\./明显\*\),以及

### 如何安装 @12-apps/feature-flags？

在项目目录运行 npm install @12-apps/feature-flags，或使用 pnpm add / yarn add / bun add。

### @12-apps/feature-flags 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @12-apps/feature-flags 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @12-apps/feature-flags 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @12-apps/feature-flags 可以商用吗？

@12-apps/feature-flags 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @12-apps/feature-flags 的下载量有多少？

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

### @12-apps/feature-flags 还在维护吗？

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

