8.3.0

8.3.0

测试测试过
Lang语言 SwiftSwift
许可 MIT
发布上次发布2023年3月
SPM支持 SPM

Bas van Kuijck 维护。



8.3.0

  • Bas van Kuijck

Natrium

钠是 E-sites iOS Suite 的一部分。


一个预构建(Swift)脚本来在构建时根据环境和构建配置改变您的 Xcode 项目。

forthebadge forthebadge

Platform CocoaPods Compatible Carthage compatible Travis-ci

TL;DR

使用钠,您可以将这个

#if ENVIRONMENT_STAGING
    let apiHost = "mynice.staging-api.com"
    
#elseif ENVIRONMENT_DEVELOPMENT
    let apiHost = "mynice.dev-api.com"
    
#else
    let apiHost = "mynice.api.com"
#endif

Alamofire.request("https://\(apiHost)/items").responseJSON { response in
    // ...
}

Build configurations jungle

变成这个

let apiHost = Natrium.Config.apiHost

Alamofire.request("https://\(apiHost)/items").responseJSON { response in
    // ...
}

Build configurations jungle

🧙‍♂️通过预行动脚本的魅力。😱

"${PROJECT_DIR}/Pods/Natrium/Natrium/natrium" Production

迁移

到 v8.x

  • 二进制文件的位置从(比如在 Cocoapods 中)Pods/Natrium/bin/natrium 改为 Pods/Natrium/Natrium/natrium
  • 生成的 Natrium.swift 文件位置改为(比如在 Cocoapods 中):Pods/Natrium/Natrium/Natrium.swift

到 v7.x

  • 安装 natrium 命令已被移除
  • 可以使用 .natrium-env.env 文件来配置环境变量
  • 命令行界面不再需要 --project 参数
  • 不再支持 Objective-c,如果仍然需要,请使用 v6.4.0 版本。

转到 v6.x 系列

对于 Natrium v6.x 系列,您需要手动将 Natrium.swift 文件导入到项目中,以使其在新版的 Xcode 构建系统下工作。请参阅安装指南

从 v5.x 系列

Natrium v5.x 已经不再需要构建阶段脚本。
打开您的目标设置中的 构建阶段 并移除 [Natrium] 检查 步骤。

否则,在脚本步骤中构建将失败。

路线图

  • 与 Swift 4.2 兼容
  • 使用 Swift 而不是 Ruby
  • 移除 ImageMagick 依赖
  • 单元测试
  • 不同的安装选项(除 CocoaPods 之外)
  • 更好的错误处理/报告

安装

实现

Swift

只需将来自指定位置(见安装指南)的Natrium.swift文件添加到项目目标中(不要复制)。

配置

配置文档可在此处找到这里

使用

如上所示的示例.natrium.yml将生成以下Config.swift文件

import Foundation

/// Natrium.swift
/// Autogenerated by natrium
///
/// - see: https://github.com/e-sites/Natrium

enum Natrium {

    enum Environment: String {
        case staging = "Staging"
        case production = "Production"
    }

    enum Configuration: String {
        case debug = "Debug"
        case release = "Release"
        case adhoc = "Adhoc"
    }

    enum Config {
        static let environment: Natrium.Environment = .staging
        static let configuration: Natrium.Configuration = .debug
        static let testVariableDouble: Double = 1.0
        static let testVariableString: String = "debugString"
        static let testVariableBoolean: Bool = false
        static let testVariableInteger: Int = 125
        static let testArray: [String] = [ "StagingFoo", "StagingBar" ]
    }
}

可以这样使用

class MainViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        print("bundle identifier: \(Bundle.main.bundleIdentifier!)")
        print("environment: \(Natrium.Config.environment)")
    }
}

结果

bundle identifier: com.esites.app.staging
environment: Staging

开发

运行

make xcodeproj

然后打开Natrium.xcodeproj

高级

日志记录

您可以在Pods/Natrium/bin/文件夹中找到包含前一个构建日志的natrium.log。这可能会帮助您进行调试。

环境变量

如果将.env放置在项目的根目录中,Natrium将使用该文件来添加环境变量到您已经存在的环境变量中。该.env文件应采用以下格式:

KEY=VALUE

例如:

PRODUCTION_SECRET_API_TOKEN=3489uierhjkfbnvcx
STAGING_SECRET_API_TOKEN=iujk9qijs41

这样您可以在.natrium.yml文件中使用#env(PRODUCTION_SECRET_API_TOKEN)

对于CI/CD流水线,您只需将这些环境变量添加到您的构建管道中(例如在travis或buddybuild中)。

但是,如果您想用于本地(调试)构建,此文件可能会很有帮助。
⚠️别忘了将.env添加到.gitignore中。