Можно ли сделать локальный модуль с помощью менеджера пакетов 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