0002 - Public API for modules
对应的官方页面地址
ID:
ADR-0002
状态:
进行中
发表于:
2022-06-02
背景和问题陈述
目前,我们在不同的包之间使用直接文件引用。这导致包中的所有内容都可供我们项目中的任何其他包使用。这就很难确定更改可能产生的潜在副作用,因为它们不是孤立于单个包的。传统上,只有包的特定子集才会作为公共模块公开,这提供了安全性,即更改将在包内部进行,并且最好由其单元测试覆盖。
考虑的方案
直接引用 -- 我们可以决定继续原样。没有公共 API。
使用 index.ts 定义公共模块 -- 我们将
index.ts
添加到定义了「公共」接口的每一个文件夹中。然后其他包导入根索引文件,并禁止直接引用内部文件。
决策结果
选择的方案:使用 index.ts 定义公共模块。
积极的后果
公共模块已定义。
导入可以保持清爽,因为并非每个文件都需要手动导入。
安全性 - 知道更改是与包隔离的。
消极的后果
每当添加新的导出 API 时,我们都必须更新
index.ts
文件。
最后更新于