使用Swift Package Manager添加依赖项

问题描述 投票:0回答:1

我正在尝试将Socket.IO添加到我的Xcode项目中。我是Swift Package Manager的新手(我们可以在我们的项目中删除代码的日子在哪里)

我创建了一个Package.swift文件,其中包含here所描述的以下内容

import PackageDescription

    let package = Package(
        name: "socket.io-test",
        products: [
            .executable(name: "socket.io-test", targets: ["MyTarget"])
        ],
        dependencies: [
            .package(url: "https://github.com/socketio/socket.io-client-swift", .upToNextMinor(from: "14.0.0"))
        ],
        targets: [
            .target(name: "MyTarget", dependencies: ["SocketIO"], path: "./My/Target/Path/")
        ]
    )

然后我打开我的终端并导航到包含我的项目和我的Package.swift文件的文件夹。 (我假设它应该在我的项目文件夹中)

然后我运行以下命令:

swift package resolve

这产生了以下错误:

error:manifest parse error(s):error:参数'targets'必须在参数'dependencies'目标之前:[~~~~ ^ ~~~~~~~~~

因此,按照错误给出的指令,我将“目标”移到了依赖项之上。

我再次运行命令然后收到以下错误:

错误:清单解析错误:错误:调用中的参数标签不正确(具有'name:products:targets:dependencies:',expected'name:pkgConfig:targets:dependencies:')let package = Package(^

由于从github页面获取的原始示例没有像这样的标签设置,我只是将我的代码更改为以下,每次尝试添加包管理器建议的内容(将一个参数添加到另一个,添加其他参数):

import PackageDescription

let package = Package(
    name: "socket.io-test",
    pkgConfig: nil,
    providers: nil,
    targets: [
        .target(name: "MyTarget", dependencies: ["SocketIO"], path: "./My/Target/Path/")
    ],
    dependencies: [
        .package(url: "https://github.com/socketio/socket.io-client-swift", .upToNextMinor(from: "14.0.0"))
    ],
    swiftLanguageVersions: nil,
    exclude: nil,
    products: [
        .executable(name: "socket.io-test", targets: ["MyTarget"])
    ]
)

但是,现在包管理器告诉我以下奇怪的错误:

错误:清单解析错误:错误:调用产品中的额外参数'products':[^

所以现在我放弃了,因为我显然无处可去。 “产品”论点怎么不属于这里?为什么包管理器没有提出任何建议呢?我相信我错过了一些小事。有人可以指点我正确的方向吗?

我也看了下面的网站寻求帮助,但仍然无法让我的工作。

Swift.org https://medium.com/xcblog/apple-swift-package-manager-a-deep-dive-ebe6909a5284

希望我的问题不会太久,有人会找时间协助:)

编辑

我将代码更改为以下内容:

import PackageDescription

let package = Package(
    name: "socket.io-test",
    dependencies: [
    .Package(url: "https://github.com/socketio/socket.io-client-swift", majorVersion: 14)
    ]
)

而这似乎没有错误。它在我的项目文件夹中放置了一个Package.resolved文件。我找不到这个文件是什么的参考,我仍然在我的项目中使用Socket.IO失去了。

编辑2

我继续使用Carthage导入框架。在15分钟内完成设置。由于这是一个与我的问题无关的不同解决方案,我决定将其添加为编辑而不是答案。

如果有人仍然能够回答上述问题,请随时参考,我仍然会测试它,并接受其工作。

ios swift package-managers
1个回答
2
投票

您需要将此行添加到Package.swift的顶部

// swift-tools-version:4.2
© www.soinside.com 2019 - 2024. All rights reserved.