1.18.6 • Published 11 months ago

zhi-env v1.18.6

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

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
1.18.1

11 months ago

1.18.0

11 months ago

1.18.5

11 months ago

1.18.4

11 months ago

1.18.3

11 months ago

1.18.2

11 months ago

1.18.6

11 months ago

1.17.2

12 months ago

1.17.1

12 months ago

1.17.0

1 year ago

1.16.1

1 year ago

1.16.0

1 year ago

1.15.1

1 year ago

1.15.0

1 year ago

1.13.4

1 year ago

1.13.3

1 year ago

1.13.2

1 year ago

1.13.1

1 year ago

1.13.0

1 year ago

1.12.0

1 year ago

1.11.3

1 year ago

1.11.2

1 year ago

1.11.1

1 year ago

1.11.0

1 year ago

1.10.0

1 year ago

1.9.0

1 year ago

1.8.2

1 year ago

1.8.1

1 year ago

1.8.0

1 year ago

1.7.0

1 year ago

1.6.0

1 year ago

1.4.0

1 year ago

1.3.0

1 year ago

1.2.0

1 year ago

1.1.0

1 year ago