美文网首页
Vapor学习之SPM(项目管理)

Vapor学习之SPM(项目管理)

作者: 小熊学编程 | 来源:发表于2019-08-07 17:04 被阅读0次

    项目管理

    The Swift Package Manager (简称SPM) 用于构建项目源码以及各种依赖,类似于 Cocoapods, Ruby gems,和NPM. 详情请访问Swift.org →

    Package Manifest

    关于 SPM ,首先要看的是 package manfiest 它位于项目根目录中,并被命名为Package.swift

    Dependencies

    Dependencies 代表你的 package 所需要依赖的其它的 SPM package 所有 Vapor 应用都依赖于 Vapor package ,但是你也可以添加其它想要的 dependency

    // swift-tools-version:4.0
    import PackageDescription
    
    let package = Package(
        name: "VaporApp",
        dependencies: [
            // 💧 A server-side Swift web framework. 
            .package(url: "[https://github.com/vapor/vapor.git](https://github.com/vapor/vapor.git)", from: "3.0.0"),
        ],
        targets: [ ... ]
    )
    

    上面这个示例,你可以看到 vapor/vapor → 3.0或以上版本是这个 package 的 dependency 。当你在 package 中添加了 dependency ,接下来你必须设置 targets 。

    注意: 只要修改了 package manifest,都需要调用 vapor update 来使得变更生效。

    Targets

    Targets 包含了所有的 modules、executables 以及 tests

    // swift-tools-version:4.0
    import PackageDescription
    
    let package = Package(
        name: "VaporApp",
        dependencies: [ ... ],
        targets: [
            .target(name: "App", dependencies: ["Vapor"]),
            .target(name: "Run", dependencies: ["App"]),
            .testTarget(name: "AppTests", dependencies: ["App"]),
        ]
    )
    

    虽然可以添加很多 targets 来组织你的代码,但大部分 Vapor 应用有3个 targets 就足够了。每个 target 声明了它依赖的 modules 。为了在代码中可以 import 这些 modules ,你必须添加 module 名字。一个 target 可以依赖于工程中其它的 target 或者暴露出来的 modules 。

    提示: Executable targets (包含main.swift文件的targets) 不能被其它 modules 导入。这就是为什么 Vapor 会有AppRun target。任何包含在App中的代码都可以在AppTests中被测试验证。

    目录结构

    .
    ├── Sources
    │   ├── App
    │   │   └── (Source code)
    │   └── Run
    │       └── main.swift
    ├── Tests
    │   └── AppTests
    └── Package.swift
    

    每个 .target 对应 Sources 中的一个文件夹。每个 .testTarget对应 Tests中的一个文件夹。

    Troubleshooting

    如果使用SPM时遇到问题可尝试

    $ vapor clean
    

    相关文章

      网友评论

          本文标题:Vapor学习之SPM(项目管理)

          本文链接:https://www.haomeiwen.com/subject/kbcodctx.html