feature-flag-manager 部署功能时确保安全。可以瞬间开启/关闭功能,运行 A/B 测试,并从 1% 到 100% 逐渐推出 — 无需重新部署代码。
它的作用是:
在实时控制功能的可见性而无需推送新代码:
瞬间开启/关闭 — 使用一条命令开启/关闭功能
逐渐推出 — 从 1% 的用户开始,慢慢增加
A/B 测试 — 使用自动流量分割来测试变体
关闭开关 — 对于有 bug 的功能的紧急关闭按钮
用户定向 — 向特定用户或群组显示功能
快速开始
flag.js create dark-mode --description "Dark theme UI"
node flag.js update dark-mode --percentage 10
node flag.js enabled dark-mode --user-id alice
→ true (或根据百分比返回 false)
node flag.js update dark-mode --percentage 50
node flag.js update dark-mode --percentage 100
常见用例
安全功能发布
替代:部署 → 祈祷 → 回滚
这样做:部署(禁用)→ 启用 5% → 监控 → 25% → 100%
node flag.js create new-checkout-flow
node flag.js update new-checkout-flow --percentage 5
监控错误率...
node flag.js update new-checkout-flow --percentage 100
A/B 测试定价页面
测试 3 个变体:50% 的用户看到当前版本,25% 的用户看到 v1,25% 的用户看到 v2
node flag.js create pricing-test --variants control,v1,v2 --weights 50,25,25
在代码中,为每个用户获取变体
node flag.js variant pricing-test --user-id user123
→ "v1"
紧急关闭开关
新功能导致错误?瞬间禁用而无需重新部署
node flag.js toggle broken-feature --off
修复?重新启用
node flag.js toggle broken-feature --on
所有命令
命令 目的
create 创建一个新标志
toggle 瞬间开启/关闭
update --percentage N 设置推出百分比(0-100)
enabled 检查用户是否启用
variant 获取 A/B 变体
list 显示所有标志和状态
history 查看更改历史
export 导出配置以备用
配置
标志存储在 .featureflags/config.json 中:
{
"flags": {
"dark-mode": {
"enabled": true,
"percentage": 25,
"description": "Dark theme support"
},
"pricing-test": {
"enabled": true,
"percentage": 100,
"variants": ["control", "v1", "v2"],
"weights": [50, 25, 25]
}
}
}
集成示例
const flag = require('./flag.js');
async function renderDashboard(userId) {
// 检查新仪表盘是否为此用户启用
if (await flag.enabled('new-dashboard', { userId })) {
return renderNewDashboard();
}
return renderLegacyDashboard();
}