|
# std-env |
|
|
|
[](http://npmjs.com/package/std-env) |
|
[](http://npmjs.com/package/std-env) |
|
[](https://bundlephobia.com/result?p=std-env) |
|
|
|
> Runtime agnostic JS utils |
|
|
|
## Installation |
|
|
|
```sh |
|
# Using npm |
|
npm i std-env |
|
|
|
# Using pnpm |
|
pnpm i std-env |
|
|
|
# Using yarn |
|
yarn add std-env |
|
``` |
|
|
|
## Usage |
|
|
|
```js |
|
// ESM |
|
import { env, isDevelopment, isProduction } from "std-env"; |
|
|
|
// CommonJS |
|
const { env, isDevelopment, isProduction } = require("std-env"); |
|
``` |
|
|
|
## Flags |
|
|
|
- `hasTTY` |
|
- `hasWindow` |
|
- `isDebug` |
|
- `isDevelopment` |
|
- `isLinux` |
|
- `isMacOS` |
|
- `isMinimal` |
|
- `isProduction` |
|
- `isTest` |
|
- `isWindows` |
|
- `platform` |
|
- `isColorSupported` |
|
- `nodeVersion` |
|
- `nodeMajorVersion` |
|
|
|
You can read more about how each flag works from [./src/flags.ts](./src/flags.ts). |
|
|
|
## Provider Detection |
|
|
|
`std-env` can automatically detect the current runtime provider based on environment variables. |
|
|
|
You can use `isCI` and `platform` exports to detect it: |
|
|
|
```ts |
|
import { isCI, provider, providerInfo } from "std-env"; |
|
|
|
console.log({ |
|
isCI, // true |
|
provider, // "github_actions" |
|
providerInfo, // { name: "github_actions", isCI: true } |
|
}); |
|
``` |
|
|
|
List of well known providers can be found from [./src/providers.ts](./src/providers.ts). |
|
|
|
## Runtime Detection |
|
|
|
`std-env` can automatically detect the current JavaScript runtime based on global variables, following the [WinterCG Runtime Keys proposal](https://runtime-keys.proposal.wintercg.org/): |
|
|
|
```ts |
|
import { runtime, runtimeInfo } from "std-env"; |
|
|
|
// "" | "node" | "deno" | "bun" | "workerd" | "lagon" ... |
|
console.log(runtime); |
|
|
|
// { name: "node" } |
|
console.log(runtimeInfo); |
|
``` |
|
|
|
You can also use individual named exports for each runtime detection: |
|
|
|
> [!NOTE] |
|
> When running code in Bun and Deno with Node.js compatibility mode, `isNode` flag will be also `true`, indicating running in a Node.js compatible runtime. |
|
> |
|
> Use `runtime === "node"` if you need strict check for Node.js runtime. |
|
|
|
- `isNode` |
|
- `isBun` |
|
- `isDeno` |
|
- `isNetlify` |
|
- `isEdgeLight` |
|
- `isWorkerd` |
|
- `isLagon` |
|
- `isFastly` |
|
|
|
List of well known providers can be found from [./src/runtimes.ts](./src/runtimes.ts). |
|
|
|
## Platform-Agnostic `env` |
|
|
|
`std-env` provides a lightweight proxy to access environment variables in a platform agnostic way. |
|
|
|
```ts |
|
import { env } from "std-env"; |
|
``` |
|
|
|
## Platform-Agnostic `process` |
|
|
|
`std-env` provides a lightweight proxy to access [`process`](https://nodejs.org/api/process.html) object in a platform agnostic way. |
|
|
|
```ts |
|
import { process } from "std-env"; |
|
``` |
|
|
|
## License |
|
|
|
MIT |
|
|