Natrium

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


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

forthebadge forthebadge

Platform CocoaPods Compatible Carthage compatible Travis-ci

概要 (TL;DR)

使用 Natrium,您可以将此

#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

至 v7.x

至 v6.x

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

从 v5.x

Natrium v5.x 不再需要构建阶段脚本。
从目标设置中打开您的 Build Phases 并删除 [Natrium] check 步骤。

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

路线图

安装

实现

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