Можно ли сделать локальный модуль с помощью менеджера пакетов Swift?

Я знаю, что менеджер пакетов Swift может компилировать код из github в качестве модуля для моего проекта, но могу ли я сказать менеджеру пакетов, чтобы вместо этого компилировать код, который хранится локально на моем компьютере?

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

2 ответа

Решение

Вы можете сослаться на локальный каталог в вашем Package.swift файл, но это должен быть репозиторий Git. Кроме того, инициализация репо, фиксация и маркировка не достаточно; хранилище должно быть удалено для удаленного swift build функционировать правильно.

Согласно Руководству по использованию SwiftPM:

Пакеты - это Git-репозитории, помеченные семантическими версиями, в корне которых содержится файл Package.swift. Инициализация пакета создала файл Package.swift, но чтобы сделать его пригодным для использования пакетом, нам нужно инициализировать Git-репозиторий хотя бы с одним тегом версии.

Документация менеджера пакетов Swift также заявляет, что "вы можете указать URL (или локальный путь) для любого допустимого пакета Swift" и предоставляет пример Package.swift с локальной ссылкой на файл: .Package(url: "../StringExtensions", "1.0.0"),

Примечание. Я отредактировал ответ, чтобы уточнить, что диспетчер пакетов Swift может ссылаться на локальный путь, но этот путь должен содержать действительный репозиторий Git с тегом. Мой оригинальный тестовый проект указывал на зависимый локальный путь, который содержал .git каталог, и поэтому он успешно построен с swift build,

Вы также можете использовать

.package(path: "path to folder")

если вы не хотите накладных расходов на дополнительное git-репо.

С инструментами версии Swift 4 есть разные способы сделать это - где вам не нужно предоставлять версию с тегом:

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

Смотрите также: https://github.com/apple/swift-package-manager/blob/master/Documentation/PackageDescriptionV4.md

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