Linter · Rules
n/no-process-env
Disallow process.env
When you read process.env all over the code, it's hard to list the variables the program needs, a misspelled name gives undefined without an error, and tests have to change the process's environment. Read the environment in one config file and import the values from there.
Configure
Off by default. To turn it on:
bunfig.toml
[lint.rules]
"n/no-process-env" = "error" # or "warn"
Every option, set to its default:
bunfig.toml
[lint.rules]
"n/no-process-env" = ["error", {
allowedVariables = [], # list of strings
}]
Examples
Reported:
if (process.env.NODE_ENV === "development") {
enableLogging();
}
Not reported:
import { config } from "./config";
if (config.env === "development") {
enableLogging();
}
Options
| Option | Default | What it does |
|---|---|---|
allowedVariables | [] | Names of variables you can read from process.env. |
const isProduction = process.env.NODE_ENV === "production";
const mode = process.env["NODE_ENV"];
Other variables are still reported, and so is process.env by itself:
const port = process.env.PORT;
const { NODE_ENV } = process.env;
When not to use it
Turn it off for the one file that reads the environment, and in scripts and small tools where a config file is more than you need.