Swift Packager Manager

1. Giới thiệu:

Swift Packager Manager, ra mắt cùng Swift 3.0 được giới thiệu là một công cụ giúp quản lý việc phân phối mã nguồn, giúp cho việc chia sẻ và dùng lại code được dễ dàng.

Hiện nay Swift PM mới chỉ hỗ trợ cho macOS, các nền khác như iOS, watchOS, tvOS chắc phải đợi thêm 1 thời gian nữa.

Một số lệnh chính trong Terminal:

- Kiểm tra version của Swift, để sử dụng Swift PM thì version phải từ 3.0 trở lên:

swift --version

Tạo package mới

swift package init
swift package init --type executable
swift package init --type library

Có 2 loại package là file chạy executable và thư viện library

- Download các thư viện

swift package fetch

- Update các thư viện trong package

swift package update

- Tạo Xcode project cho package

swift package generate-xcodeproj

Chúng ta sẽ tạo 1 ứng dụng command-line để tìm hiểu được rõ ràng hơn.

2. Demo:

2.1. Khởi tạo:

Vào Terminal duyệt tới vị trí cần lưu và tạo thư mục MGSwiftPMDemo, sau đó nhập lệnh dưới để khởi tạo package:

swift package init --type executable

Sau lệnh trên ta sẽ được file Package.swift và thư mục Source chứa file chương trình chính main.swift.

File Package.swift gồm 2 phần sau:

  • "name": tên dự án và tên file chạy sau khi biên dịch
  • "dependencies": danh sách các thư viện mà chương trình sẽ sử dụng

2.2. Thêm thư viện:

Chúng ta sẽ thêm thư viện SwiftyJSON bằng cách chỉnh sửa file Package.swift như sau:

// swift-tools-version:3.1

import PackageDescription

let package = Package(
    name: "MGSwiftPMDemo",
    dependencies: [
        .Package(url: "https://github.com/SwiftyJSON/SwiftyJSON.git", versions: Version(1, 0, 0)..<Version(3, .max, .max)),
        ]
)

Sau đó chúng ta có thể download SwiftyJSON bằng lệnh:

swift package fetch

Sau lệnh trên thì các file thư viện sẽ được download về thư mục Packages.

2.3. Tạo Xcode project:

Chúng ta dùng lệnh dưới để tạo file project:

swift package generate-xcodeproj

Mở file project mới tạo ta có kết quả như sau:

2.4. Test:

Mở file main.swift và chúng ta có thể test thư viện mới thêm vào:

import SwiftyJSON
import Foundation

print("Swift Package Manager Demo")

let jsonString = "{\"success\": true}"

if let dataFromString = jsonString.data(using: .utf8) {
    let json = JSON(data: dataFromString)
    print("Success: \(json["success"])")
}

Chọn target là command-line và chạy, chúng ta sẽ được kết quả như bên dưới:

Swift Package Manager Demo
Success: true
Program ended with exit code: 0

3. Kết luận:

Xcode kể từ rất lâu rồi luôn thua kém các IDE khác khi không có một công cụ quản lý thư viện cho dự án, giờ đây với Swift Packager Manager cho các dự án macOS, chúng ta hoàn toàn có thể hi vọng Swift PM sẽ sớm có mặt cho iOS (có thể cùng với Swift 4.0). Lúc đó lập trình viên sẽ có thêm 1 lựa chọn chính chủ từ Apple bên cạnh Cocoapod và Carthage.

Hiện tại danh sách các thư viện hỗ trợ Swift PM còn rất ít, các bạn có thể xem danh sách ở trang https://swiftmodules.com.

Source code