Swift Package - как исключить все файлы в корне каталога git?

Я создаю Swift Package, который по сути является оболочкой для нескольких XCFrameworks, созданных из фреймворков Objective-C, поэтому их можно установить через SPM.

Все работает нормально, что касается создания SP и возможности добавления его в качестве зависимости к приложению. Но у меня есть куча несущественных файлов, включенных в репозиторий SP, которые я не хочу включать в фактический SP, т.е. они не должны отображаться в навигаторе Xcode, когда SP добавляется в качестве зависимости. (Исходные Obj-C Frameworks, README, Changelog, Xcode Workspace, файлы сценариев для создания XCFrameworks и т . Д.).

Это вообще возможно? Или SPM всегда будет проверять все репо и делать все файлы видимыми для пользователя?

Я пробовал использовать различные перестановки Target спецификаторы: source, path, exclude но безрезультатно.

Вот самый близкий к действующему манифесту, который я могу найти, но когда я проверяю SP в демонстрационном приложении Xcode, я все еще могу видеть все файлы из включенного репо:

      // swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "WrapperSwiftPackage",
    platforms: [.iOS(.v13)],
    products: [
        .library(name: "WrapperSwiftPackage", targets: ["WrapperSwiftPackage"])
    ],
    dependencies: [],
    targets: [
        .target(
            name: "WrapperSwiftPackage",
            dependencies: [
                "ObjCFramework1",
                "ObjCFramework2"
            ],
            path: "", // Set to root directory so we can exclude files below
            exclude: [
                "CHANGELOG.md",
                "Dangerfile.swift",
                "README.md",
                "Workspace.xcworkspace",
                "Scripts/generate-xcframework.sh",
                "Scripts/link_git_hooks.sh",
                "Objective-C Frameworks/"
            ],
            sources: [
                "Sources/WrapperSwiftPackage/main.swift",
                "XCFrameworks/ObjCFramework1.xcframework",
                "XCFrameworks/ObjCFramework2.xcframework"
            ]
        ),
        .binaryTarget(name: "ObjCFramework1", path: "XCFrameworks/ObjCFramework1.xcframework"),
        .binaryTarget(name: "ObjCFramework2", path: "XCFrameworks/ObjCFramework2.xcframework")
    ]
)

1 ответ

Не уверен, что это не ошибка, но я случайно нашел одно решение для этого.

Если поставить пустой Package.swift (имею в виду такой):

      // swift-tools-version:5.5

import PackageDescription

let package = Package()

в одну из подпапок проекта, то даже несмотря на то, что SPM проверяет подпапку, она исключается из навигатора Xcode и, следовательно, из видимости проекта.

Я хотел бы знать, является ли это ошибкой или это где-то задокументировано, каждый намек приветствуется.

Работает с локальными и удаленными зависимостями.

Другие вопросы по тегам