2016-11-23 12 views
9

Wiem, że menedżer pakietów Swift może skompilować kod z github jako modułu dla mojego projektu, ale czy mogę powiedzieć menedżerowi pakietów, aby skompilował kod zapisany lokalnie na moim komputerze?Czy mogę utworzyć moduł lokalny z menedżerem pakietów Swift?

Chodzi o to, że mam trochę kodu, który chcę oddzielić od reszty mojego projektu, więc przechowuję go w folderze, a kompilator Swift zbuduje go, aby ten kod mógł być importowany jak każdy inny moduł.

Odpowiedz

12

Możesz odwoływać się do lokalnego katalogu w swoim pliku Package.swift, ale musi to być repozytorium Git. Inicjowanie repozytorium, zatwierdzanie i tagowanie nie jest wystarczające; repozytorium musi zostać przekazane do zdalnego urządzenia, aby swift build działało poprawnie.

Według SwiftPM Usage Guide:

Packages are Git repositories, tagged with semantic versions, containing a Package.swift file at their root. Initializing the package created a Package.swift file, but to make it a usable package we need to initialize a Git repository with at least one version tag.

Swift Package Manager Documentation stwierdza również, że „można określić adres URL (lub ścieżkę lokalną) do każdej ważnej pakietu Swift” i stanowi przykład Package.swift z lokalnym referencyjny nadany: .Package(url: "../StringExtensions", "1.0.0") .

Uwaga: I edycja odpowiedź wyjaśnić, że Swift Package Manager może odwoływać ścieżkę lokalną, ale ścieżka koniecznością zawierać poprawny repozytorium Git ze znacznikiem. Mój oryginalny projekt testowy wskazywał na zależną lokalną ścieżkę, która zawierała katalog .git, a więc z powodzeniem został zbudowany przy użyciu swift build.

+0

nie działa. Mam 'error: Directory at path ... nie jest repozytorium Git'. Prawdopodobnie zostawiłeś zabłąkany folder '.git' w twoim, dlatego menedżer pakietów wziął go jako repozytorium git –

+0

Być może jest on ukryty powyżej, ale dla zmian w pakiecie/repo, tag/wersja najwyraźniej musi być zaktualizowana dla wersji być dostępnym, lokalnie. Np. Jeśli przed zmianą był 1.0.0, musisz zaktualizować tag do wersji 1.0.1. Przynajmniej to było moje dotychczasowe doświadczenie. (BTW, mam nadzieję, że to zachowanie zmieni się w przyszłości.) Wydaje się to naprawdę nieostre z czysto lokalnego rozwoju.) –

3

Z Swift 4 narzędzi wersji, nie ma różne sposoby turystyczne this-- gdzie nie trzeba, aby zapewnić znakowanych wersję:

.package(url: "<path to repo>", .branch("master")), 

Patrz także: https://github.com/apple/swift-package-manager/blob/master/Documentation/PackageDescriptionV4.md

+0

Widzę jedno zastrzeżenie: Musisz przynajmniej zatwierdzić zmianę w swojej gałęzi, aby była widoczna dla tego, co kompilujesz . Wygląda na to, że musisz też wykonać 'aktualizację pakietu SWIFT '. –

Powiązane problemy