zhi-env
v1.18.6
Published
a cross-platform env config lib
Downloads
21
Readme
zhi-env
a cross-platform env config lib
Usage
For simple use
import { Env } from "zhi-env"
const env = new Env({
"some-key": "some-value",
})
const val = env.getEnv("some-key")
console.log("val=>", val)
For vite
import { Env } from "zhi-env"
const env = new Env(import.meta.env)
const val = env.getEnv("some-key")
console.log("val=>", val)
For Nuxt
framework
// https://github.com/vitejs/vite/issues/9539#issuecomment-1206301266
import { Env } from "zhi-env"
const nuxtEnv = useRuntimeConfig()
const env = new Env(nuxtEnv)
// 访问公共变量
// const env = new Env(nuxtEnv.public)
const val = env.getEnv("some-key")
console.log("val=>", val)
For Astro framework or other libs
import { Env } from "zhi-env"
// 1 add "module": "esnext" to tsconfig.json
// add "target": "esnext" to tsconfig.json
// 2 add env.d.ts
// ```
// interface ImportMeta {
// readonly env: ImportMetaEnv
// }
// ```
// 3 (optional) if you are using esbuild, add define to esbuild.
// ```
// const defineEnv = {
// NODE_ENV: isProduction ? "production" : "development",
// ...getNormalizedEnvDefines(["NODE", "VITE_"]),
// }
// bundledEsbuildConfig.define = {}
// bundledEsbuildConfig.define = {
// ...bundledEsbuildConfig.define,
// "import.meta.env": JSON.stringify(defineEnv),
// }
// ```
const envMeta = import.meta.env
const env = new Env(import.meta.env)
const val = env.getEnv("some-key")
console.log("val=>", val)
For unit tests
- vitestrecommend
// simple
describe("zhiEnv", () => {
it("test env", () => {
const env = new Env(import.meta.env)
expect(env.getEnv(EnvConstants.NODE_ENV_KEY)).toEqual("test")
})
})
- jest
import { getNormalizedEnvDefines } from "../../../packages/esbuild-config-custom/esmUtils"
describe("zhiEnv", () => {
const NOT_EXIST_KEY = "NOT_EXIST_KEY"
getNormalizedEnvDefines(["NODE", "VITE_"])
it("test env", () => {
const env = new Env(import.meta.env)
expect(env.getEnv(EnvConstants.NODE_ENV_KEY)).toEqual("test")
})
it("test debug mode", () => {
const env = new Env(import.meta.env)
expect(env.getEnv(EnvConstants.VITE_DEBUG_MODE_KEY)).toEqual("true")
})
})
Deps
## Congregations! zhi-env need no deps, it is just pure js code 🎉
Dev
pnpm dev -F zhi-env
Build
pnpm build -F zhi-env
Api
pnpm doc -F zhi-env
pnpm md -F zhi-env
Test
Execute the unit tests via vitest
pnpm test -F zhi-env
Publish
pnpm publish -F zhi-env --tag latest