deno.land / std@0.157.0 / dotenv
Setup a .env file in the root of your project.
# .env
GREETING=hello worldThen import the configuration using the config function.
// app.ts
import { config } from "https://deno.land/std@0.157.0/dotenv/mod.ts";
console.log(await config());Then run your app.
> deno run --allow-env --allow-read app.ts
{ GREETING: "hello world" }path?: string: Optional path to .env file. Defaults to ./.env.export?: boolean: Set to true to export all .env variables to the
current processes environment. Variables are then accessable via
Deno.env.get(<key>). Defaults to false.safe?: boolean: Set to true to ensure that all necessary environment
variables are defined after reading from .env. It will read .env.example
to get the list of needed variables.example?: string: Optional path to .env.example file. Defaults to
./.env.example.allowEmptyValues?: boolean: Set to true to allow required env variables to
be empty. Otherwise it will throw an error if any variable is empty. Defaults
to false.defaults?: string: Optional path to .env.defaults file which defaults to
./.env.defaults.restrictEnvAccessTo?: Array<string>: Optional list of Env variables to read
from process. Alternatively the complete Env is looked up. This allows to
permit access to only specific Env variables with --allow-env=ENV_VAR_NAME.load.ts automatically loads the local .env file on import and exports it to
the process environment:
# .env
GREETING=hello world// app.ts
import "https://deno.land/std@0.157.0/dotenv/load.ts";
console.log(Deno.env.get("GREETING"));> deno run --allow-env --allow-read app.ts
hello worldTo enable safe mode, create a .env.example file in the root of the project.
# .env.example
GREETING=Then import the configuration with safe option set to true.
// app.ts
import { config } from "https://deno.land/std@0.157.0/dotenv/mod.ts";
console.log(await config({ safe: true }));If any of the defined variables is not in .env, an error will occur. This
method is preferred because it prevents runtime errors in a production
application due to improper configuration.
Another way to supply required variables is externally, like so:
GREETING="hello world" deno run --allow-env app.tsDefault values can be easily added via creating a .env.defaults file and using
the same format as an.env file.
# .env.defaults
# Will not be set if GREETING is set in base .env file
GREETING="a secret to everybody"The parsing engine currently supports the following rules:
export: trueBASIC=basic becomes { BASIC: "basic" }# are treated as commentsEMPTY= becomes { EMPTY: "" })SINGLE_QUOTE='quoted' becomes
{ SINGLE_QUOTE: "quoted" })MULTILINE="new\nline"
becomes{ MULTILINE: "new
line" }JSON={"foo": "bar"} becomes
{ JSON: "{\"foo\": \"bar\"}" })trim)
(FOO= some value becomes { FOO: "some value" })FOO=" some value "
becomes { FOO: " some value " })KEY=$KEY or KEY=${KEY} becomes
{ KEY: "<KEY_VALUE_FROM_ENV>" })KEY=\$KEY becomes { KEY: "\\$KEY" })KEY=${KEY:-default} If KEY exists it becomes
{ KEY: "<KEY_VALUE_FROM_ENV>" } If not, then it becomes
{ KEY: "default" }. Also there is possible to do this case
KEY=${NO_SUCH_KEY:-${EXISTING_KEY:-default}} which becomes
{ KEY: "<EXISTING_KEY_VALUE_FROM_ENV>" })import { stringify } from "https://deno.land/std@0.157.0/dotenv/mod.ts";
const string = stringify({ GREETING: "hello world" });
console.log(string);
/*
GREETING='hello world'
*/dotenvand
dotenv-expand.Version Info