Dependency-Cruiser 使用教程
Dependency-Cruiser 是一款强大的工具,用于可视化工厂和校验你的JavaScript或TypeScript项目中的模块依赖关系。接下来,我们将深入探讨其目录结构、启动文件和配置文件。
1. 项目目录结构及介绍
在 dependency-cruiser
项目中,典型的目录结构如下:
project-root/
|-- node_modules/ # 存放所有依赖包的地方
|-- src/ # 主要源代码目录
| |-- moduleA.ts # 示例模块A
| |-- moduleB.ts # 示例模块B
|-- .dependency-cruiser.js # 配置文件
|-- package.json # 项目元数据,包括npm脚本
|-- package-lock.json # 依赖锁定文件
src/
目录包含了项目的主要源代码。.dependency-cruiser.js
是Dependency-Cruiser的配置文件,package.json
包含项目的元数据和可运行的npm脚本。
2. 项目启动文件介绍
虽然 dependency-cruiser
不依赖特定的启动文件,但通常我们会定义一个或多个npm脚本来运行它。例如,在 package.json
文件中,你可以添加以下脚本来执行依赖关系校验:
{
"scripts": {
"check-deps": "depcruise src --config .dependency-cruiser.js"
}
}
这个 check-deps
脚本会运行 dependency-cruiser
来检查 src
目录下的依赖关系,遵循 .dependency-cruiser.js
配置文件的规定。
3. 项目的配置文件介绍
配置文件 .dependency-cruiser.js
控制了哪些依赖关系是允许的,哪些是禁止的。基本结构如下:
module.exports = {
forbidden: [
// 禁止的依赖规则
],
options: {
// 其他配置选项
}
};
forbidden
字段
forbidden
字段用于指定不被允许的依赖关系模式。例如,阻止循环依赖的规则可能如下所示:
forbidden: [
{
name: 'no-circular',
description: 'do not allow circular dependencies',
from: { kind: '*' },
to: { kind: '*', isCycle: true },
},
],
options
字段
options
字段包含其他设置,如追踪的范围、模块规范和配置文件的位置。默认情况下,大部分配置已经设定好,通常不需要额外修改。若需自定义,可以添加以下键值对:
options: {
exclude: ['**/node_modules/**'], // 忽略node_modules目录
resolveModulesFrom: ['src'], // 从何处开始解析模块
},
总结,dependency-cruiser
的配置文件提供了灵活的方式来管理你的项目依赖,确保它们符合预期的架构和最佳实践。通过理解这些基本组件,你可以更好地利用此工具来维护项目健康和整洁的依赖结构。