一个用于在 Swift 程序中处理环境变量的一站式工具。
SwiftDotenv
是一个小型且紧凑的 Swift 脚本库,允许您在运行时加载和保存 .env
文件,并通过 ProcessInfo
查询这些值以及系统提供的环境变量。它是一个用于处理运行时本地配置文件中的环境变量的单一抽象,而不是将字符串硬编码到您的应用程序或框架中,并且该配置文件不会提交到版本控制。
重要提示:请注意,将密钥或其他敏感信息存储在 .env
文件中不一定会使您的应用程序安全。有关更多信息,请参阅 NSHipster 的这篇精彩文章。
.env
文件最常用于服务器端应用程序,在开发期间将环境变量注入到应用程序中。它们可以包含 API 密钥、秘密和其他敏感信息,因此不应提交到版本控制。环境文件应仅存在于开发机器本地;在 TravisCI 或 CircleCI 等持续集成系统中,环境变量通过各自的 UI 添加,而不是使用 .env
文件。
SwiftDotenv
主要用于脚本用例,而不是在应用程序内部使用。这是因为为了从您的应用程序访问 .env
文件,它必须与您的应用程序捆绑在一起,这违背了最初将它们分开的目的。但是,您仍然可以使用 Dotenv
作为一种更 Swift 化的方式来与系统环境变量进行交互,它将仅代理到 processInfo.environment
。
SwiftDotenv
支持 Swift Package Manager,可以通过将此条目添加到您的 Package.swift
清单文件中来添加
.package(url: "https://github.com/thebarndog/swift-dotenv.git", .upToNextMajor("2.0.0"))
您还可以使用 swift-sh
等解决方案来实现更简洁的脚本设置。
import SwiftDotenv
// load in environment variables
try Dotenv.configure()
// access values
print(Dotenv.apiSecret)
要使用环境文件中的值配置环境,请调用 Dotenv.configure(atPath:overwrite:)
try Dotenv.configure()
它可以选择提供路径
try Dotenv.configure(atPath: ".custom-env")
以及不覆盖当前现有环境变量的能力
try Dotenv.configure(overwrite: false)
读取值
let key = Dotenv.apiKey // using dynamic member lookup
let key = Dotenv["API_KEY"] // using regular subscripting
设置新值
Dotenv.apiKey = .string("some-secret")
Dotenv["API_KEY"] = .string("some-secret")
// set a value and turn off overwriting
Dotenv.set(value: "false", forKey: "DEBUG_MODE", overwrite: false)
Dotenv
结构也可以被赋予自定义分隔符、文件管理器和进程信息
Dotenv.delimeter = "-" // default is "="
Dotenv.processInfo = ProcessInfo() // default is `ProcessInfo.processInfo`
Dotenv.fileManager = FileManager() // default is `FileManager.default`
如果您发现错误、有功能请求的想法或想提供帮助,请打开一个 issue 描述您的问题或一个包含您的功能的 pull request。请始终遵守行为准则。
用 Swift 和 ❤️ 制作。