如何同时创建Swift包和配套应用

gkl3eglg  于 2023-04-19  发布在  Swift
关注(0)|答案(3)|浏览(121)

我试图完成与https://github.com/pointfreeco/swift-composable-architecture相同的包组织。我想实现的功能如下:
1.配套应用程序和软件包位于同一个工作区中,可以并行编辑

1.配套应用托管在同一个存储库中,但不会作为包 checkout 的一部分下载

我试过了
1.从一个空的工作区开始,然后向其中添加一个包,但是Package.swift将不会位于repo的根目录,所以这不会起作用。
1.从包File > New > Package开始。然后在同一个文件夹中创建空的工作区。打开它并将包文件夹拖到上面。然后添加一个新的应用程序项目,将其与我将要构建的包链接。这一切似乎都工作正常。然而,现在我要带着包中的Example文件夹离开,我不能简单地删除对它的引用,只能删除整个文件夹。

iszxjhcz

iszxjhcz1#

托管在同一存储库中的配套应用Should NOT BE
我建议为您的设计系统包创建另一个存储库,并将其添加为云包。
如果您坚持为您的包和项目使用一个存储库,那么只需通过拖放操作创建包并将其添加到项目的根目录中。
然后使用git add.,然后提交并推送它。
完成后,您可以在本地添加design-system包,具体步骤如下:
1.文件
1.添加包...
1.添加本地…
1.选择您的软件包(在您的根目录中)
1.添加包后,在Targets'YourProject'GeneralFrameworks中添加

oxalkeyp

oxalkeyp2#

我能够达到我想要达到的结果,遵循这些步骤:
1.从包File〉New〉Package开始。关闭此项目。
1.创建一个空工作区并将其保存到包的根目录。
1.从Finder中,将您的包文件夹拖到工作区中。
1.再次打开工作区。向其中添加新的应用程序项目,并再次将其保存到包的根目录。关闭此工作区。
1.转到您的App项目根目录并添加一个空的包文件,如下所示:

// swift-tools-version:5.5

import PackageDescription

let package = Package(
   name: "Example",
   products: []
)

1.再次打开工作区。将包拖到应用项目的根目录中。
1.选择应用项目的〉构建阶段〉将二进制文件与库链接,然后添加您的软件包
您现在应该能够编译应用程序并引用您将从中构建的包。 checkout 您的包的用户将不会获得应用程序的项目。

yhived7q

yhived7q3#

下面是我的建议,正如https://github.com/MacPaw/OpenAI的结构(也是从swift-composable-architecture的结构派生而来)所示。

Root
|-- Package.swift << Your package
|-- Sources/ << containing your package sources
|-- Demo << Companion app
  |-- Demo.xcodeProj
  |-- App/... << the wiring code of your demo project
  |-- DemoPackage
    |- Package.swift << Your demo app's package, it should declare dependency on the package of your Root ../..
    |- OtherFiles.swift

总结一下
1.在与包源相同的级别上创建演示应用程序文件夹。
1.在Demo应用中,创建一个新包DemoPackage,它依赖于您的根包../..。此包可以包含配套应用的大部分业务逻辑。
1.将DemoPackage本地添加到您的演示应用项目中。添加light wiring wrapper以引用您的DemoPackage
这样,你就可以在你提供的包中编写演示应用程序。

相关问题