--- title: Monorepo工作空间依赖治理(workspace-hoisting-隔离)最佳实践 keywords: - workspace - hoisting - 依赖隔离 - 边界 - 白名单 description: 通过工作空间依赖边界与 hoisting 控制,确保子包依赖隔离与来源合规,降低跨包污染与隐性依赖风险。 categories: - 文章资讯 - 编程技术 --- **核心要点** - 为每个子包建立允许依赖白名单;禁止未声明与跨边界依赖。 - 控制 hoisting 行为,关键依赖不进行提升或需显式允许。 **实现示例** ```ts type Pkg = { name: string; deps: string[] } type Policy = { allow: Map>; noHoist: Set } function declared(pkg: Pkg, dep: string): boolean { return pkg.deps.includes(dep) } function allowed(pkg: Pkg, dep: string, policy: Policy): boolean { const set = policy.allow.get(pkg.name) return !!set && set.has(dep) } function canHoist(dep: string, policy: Policy): boolean { return !policy.noHoist.has(dep) } function evaluate(pkg: Pkg, deps: string[], policy: Policy): { ok: boolean; errors: string[] } { const errors: string[] = [] for (const d of deps) { if (!declared(pkg, d)) errors.push(`undeclared:${pkg.name}:${d}`) if (!allowed(pkg, d, policy)) errors.push(`unallowed:${pkg.name}:${d}`) } return { ok: errors.length === 0 && deps.every(d => canHoist(d, policy)), errors } } ``` **审计与运行治理** - 对跨包访问与 hoist 清单进行审计;变更需审批与回归校验。 - 生产构建按策略执行依赖隔离与不提升规则。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部