如何使用 Swift 包管理器从现有项目创建包?

How to create package from existing project with Swift Package Manager?

是否可以从 Xcode13 中的现有项目(UIKit 应用程序)创建包?

我已经实现了应用程序,但它太大了,在构建阶段花费了太多时间。因此,我想通过 Swift 包管理器将它们打包成独立的模块化应用程序(迷你应用程序)。

可以吗?或者有更好的方法实现模块化应用

谢谢。

我认为 SPM 是当前的方式,因为您可以轻松处理包的版本控制。

您可以在本地的不同目录中创建一个新包,稍后您将把它添加为新存储库。

然后将您想要的所有内容移动到该包中。不要忘记将 访问权限设置为 public,以便可以从消费者应用程序访问它。还要转到您的项目设置并在 包依赖项 选项卡中,单击加号按钮添加新包,单击添加本地并选择您新创建的包。同时转到目标设置并在 Frameworks、Libraries 和 Embedded Content 部分添加包。

对于你的包文件,你会得到这样的东西,你需要设置你将使用它的平台,我的示例包名为 SPM1。

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

import PackageDescription

let package = Package(
    name: "SPM1",

    platforms: [
        .iOS(.v13) // set your minimal version here
    ],

    products: [
        // Products define the executables and libraries a package produces, and make them visible to other packages.
        .library(
            name: "SPM1",
            targets: ["SPM1"]),
    ],
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
        .target(
            name: "SPM1",
            dependencies: []),
        .testTarget(
            name: "SPM1Tests",
            dependencies: ["SPM1"]),
    ]
)

在您的应用程序中,像这样导入:

import SPM1

并开始使用您的新软件包。

一切正常后,您可以将包添加到新的 git 存储库中。不要忘记通过标记您的提交以 X.Y.Z 格式(如 1.0.0)对您的包进行版本控制。返回项目设置并添加 URL + 分支或版本(标签)。

您可以在本地和远程使用。在本地拥有它的优势是在开发时可以快速构建和运行。

希望对您有所帮助! :)