美文网首页
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