使用TSLINT检查打字稿项目中包装和文件夹之间的无效导入。
包装架构的自动验证和文档(通过tslint-folders-diagrams )。
tslint-folders稳定,每天在CI构建和开发框(Linux,Mac,Windows)中使用至少一种主要产品。
节省时间手动编码“愚蠢”错误的时间,例如:
file-name-casing仅允许1个样式) 我们使用SEMVER进行版本控制。有关可用版本,请参见发行版。
yarn add tslint-folders
编辑您的tslint.json以具有指向tslint-folders的条目"rulesDirectory" 。
通常这就像:
"rulesDirectory": "./node_modules/tslint-folders/dist/lib/"
有关示例,请参见tslint.tslint-folders.json。
TSLINT规则是在tslint.json中启用和配置的。
请参阅tslint.tslint-folders.json或单位测试中的tsf-folders-imports-between-packages下的部分。
可选地,您可以将tslint-folders配置分为单独的文件,例如tslint.tslint-folders.json 。要引用文件,请将此代码添加到tslint.json :
"extends": "./tslint.tslint-folders.json"
假设TSLINT已经到位,那么您现在应该看到TSLINT标记任何意外的导入(或禁用测试)。对于TSLINT,这应该像往常一样工作:在命令行,或在诸如视觉代码之类的编辑中(可能需要刷新编辑器)。
请参阅tslint-folders-diagrams
图可以自动从用于验证代码的同一配置中生成:

有关详细信息,请参见tslint-folders-diagram。
这是当前自定义规则的摘要。
| 规则ID | 描述 |
|---|---|
| tsf-folders-Disabled测试 | 检测残疾单位测试,测试套件或集成测试。 |
| TSF折叠式文件名 | 验证文件名的外壳。类似于标准规则file-name-casing除了它支持多个允许的套管,并用无效的字符(例如空格或逗号)删除文件名。 |
| tsf折线 - 派往折叠式食客 | 从Node_modules等非标准文件夹中检测导入 |
| TSF - 折线 - Imports-bete-bettepages | 从“高级”软件包中检测导入:例如,在“区域”软件包内部从应用程序“ Shell”软件包导入。这是主要的自定义规则。还可以检测使用此软件包名称(而不是相对路径)的软件包何时具有导入。 |
| tsf-folders测试与破坏点 | 检测集成测试何时具有browser.debug()之类的突破点 |
| 地点 | URL |
|---|---|
| 源代码(github) | https://github.com/mrseanryan/tslint-folders |
| Github页面 | https://mrseanryan.github.io/tslint-folders/ |
| NPM | https://www.npmjs.com/package/tslint-folders |
所有规则都使用相同的前缀tsf-folders- - 。
为了向开发人员清楚地表明涉及自定义规则,所有规则中的所有消息还包括规则ID。
这些规则中的一些可以用标准TSLINT配置代替。但是,拥有自定义规则会提供更清晰的消息,以帮助开发人员知道要修复的内容(或该代码禁用哪些规则)。
某些规则并不严格与“文件夹”有关,但在此包含在其中,因为它们似乎也有用。
有关更多详细信息和示例,请参阅单元测试
要处理tslint-folders的源代码,有一些脚本:
| 命令 | 描述 |
|---|---|
| 纱线构建 | 将规则构建到可以执行的“ DIST”文件夹中的规则。 |
| 纱线 | 绒毛是规则的源代码。 |
| 纱线开始 | 构建,测试和覆盖代码。 |
| 纱线测试 | 根据规格文件测试规则(*.lint) |
| 纱线测试 | 测试针对规格文件的单个规则(*.lint) |
规则tsf-folders-imports-between-packages的单位测试在这里。
单元测试使用测试数据检查一个相当典型的网站的包装边界。
可以在tslint.tslint-folders.json中看到匹配配置
测试数据基于使用多个软件包的网站:
| 软件包名称 | 描述 |
|---|---|
| 壳 | 应用程序外壳 - 这是顶级软件包,它可以从任何其他软件包中导入。 |
| 待办事项 | 网站的“待办事项应用程序”区域,该区域托管在外壳内。它不应从外壳或其他“区域”软件包中导入。 |
| 待办事项 | 网站的“联系信息”区域,该区域托管在外壳内。它不应从外壳或其他“区域”软件包中导入。 |
| 网格包装 | 由区域包装使用的UI网格。它不应导入任何其他公认的软件包。 |
| UTILS | 外壳和区域软件包使用的“ UTILS”软件包。它不应导入任何其他公认的软件包。 |
示例验证:“ Shell”应该能够从“ todo-Area”中导入,但反之亦然(Shell处于较高的抽象水平,并且还希望避免2向依赖关系)。
TSLINT-FOLDERS还可以验证软件包的子折叠器之间的进口。
测试数据“ Todo-Area”软件包配置了相当典型的子文件夹,例如“组件”和“模型”。 tslint.tslint-folders.json已配置为检查这些文件夹之间的导入。
| 子文件夹名称 | 描述 |
|---|---|
| 成分 | UI组件的顶级文件夹。可以从任何其他公认的文件夹中导入。 |
| ViewModels | UI组件使用的视图模型文件夹。只能从模型或utils导入。 |
| 型号 | 视图模型使用的模型文件夹。只能从utils进口。 |
| UTILS | 一个“ utils”文件夹。它不应导入任何其他公认的文件夹。 |
示例验证:“组件”应该能够从“模型”中导入,而不是相反(组件处于较高的抽象水平,并且还希望避免2向依赖关系)。
请参阅贡献读数。
该项目基于出色的SEEDER Project Project-Library-Starter。
该项目开始避免在大型打字条代码库中反复修复类似的编码问题。
请参阅此处
就是这样。让我知道这是否有用或如何改进!
肖恩·瑞安(Sean Ryan)的原始作品-Sean.ryan先生(在gmail.com上)
该项目是根据MIT许可证获得许可的 - 有关详细信息,请参见许可证文件