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 и, следовательно, из видимости проекта.
Я хотел бы знать, является ли это ошибкой или это где-то задокументировано, каждый намек приветствуется.
Работает с локальными и удаленными зависимостями.