📦 explicitDependencyImportCheck

explicitDependencyImportCheck 是一个 Swift 构建插件,旨在通过确保只导入显式声明的依赖项来帮助您强制执行清晰的依赖管理。传递依赖可能会导致一系列问题,从臃肿的构建到脆弱的代码。Swift 提供了 --explicit-target-dependency-import-check 标志来实现此目的,但它与 XcodeBuild 的配合并不稳定 – 这就是此插件的用武之地!🚀

此插件还有助于识别未使用的模块依赖项,您可以将其从 Package.swift 中删除,以进一步加快构建速度!

🌟 特性

🛠️ 安装

要将 explicitDependencyImportCheck 集成到您的 Swift 项目中,请将其添加到您的 Package.swift

dependencies: [
    .package(url: "https://github.com/Nikoloutsos/explicitDependencyImportCheck", from: "1.0.0")
]

并确保将其作为插件包含在您的 targets 中

targets: [
    .target(
        name: "AppTarget",
        plugins: [
            .plugin(name: "explicitDependencyImportCheckPlugin", package: "explicitDependencyImportCheck")
        ]
    )
]

或者将其放在 package.swift 的末尾,以应用于所有内容

// Add plugin on every target
for target in package.targets.filter({ $0.type != .plugin && $0.type != .binary }) {
    if target.plugins == nil {
        target.plugins = []
    }
    target.plugins?.append(.plugin(name: "explicitDependencyImportCheckPlugin", package: "explicitDependencyImportCheck"))
}

🚀 用法

添加后,该插件将在每次构建项目时自动检查传递依赖项。 如果检测到任何传递依赖项,Xcode 将抛出一个错误,并提供导入的传递依赖项!

注意:首次运行时,系统可能会提示您启用该插件。 请按照控制台中的说明完成设置。 CleanShot 2024-10-30 at 16 58 40

CleanShot 2024-10-30 at 16 59 10

CleanShot 2024-10-30 at 17 44 34@2x

🤝 贡献

非常欢迎贡献! 如果您想改进 explicitDependencyImportCheck 或对新功能有任何想法,请随时提出 issue 或提交 pull request。 让我们一起改进依赖管理!🌟