I’ve been kicking the wheels on Xcode 12 and its capacity to make use of frameworks and packages with playgrounds. Up till now, I’ve solely been capable of import packages which are both downloaded or developed regionally on my residence system. Nevertheless, a variety of the packages I wish to work with are hosted from GitHub.
I made a decision to observe a hunch and see if I might import my dependency by way of a neighborhood Forwarding bundle after which use that code. Lengthy story brief: I might.
Right here’s my playground, efficiently working.
The RuntimeImplementation
is asserted in a GitHub-hosted bundle known as Swift-Normal-Utility:
What I did to make this work was that I created what I known as a Forwarding Utility, whose sole job is to create a shell bundle that is determined by the distant bundle and forwards it to the playground. It appears like this. It’s a single file known as “Forwarding.swift” (no, the identify is by no means magic.) in Sources/. I exploit @_exported
to ahead the import.
/* Use this to ahead web-based dependencies to Swift Pkg */ @_exported import GeneralUtility
Its Bundle.swift installs the dependency:
dependencies: [ .package(url: "https://github.com/erica/Swift-General-Utility", .exact("0.0.4")), ], targets: [ .target( name: "ForwardingUtility", dependencies: [ .product(name: "GeneralUtility"), ], path: "Sources/" ), ],
And that’s just about all that there’s to it, apart from (as I discussed in my different submit about the right way to use SwiftPM packages in playground workspaces) that you could have to give up and re-open the primary beta earlier than you may import the forwarding.
Let me know something that I tousled. But in addition let me know if this was useful to you!