1pass-env
Manage environment variables with 1Password. It is a wrapper around the
1password-cli
that allows you to store environment variables in 1Password and load them in a
way that is comparable to (and uses)
dotenv.
Installation
Add the package using your favorite package manager:
$ pnpm add 1pass-env
Usage
You will need to create a .1pass-envrc
file at the root of your project:
{
"development": {
"item": "Cool app.jpeg",
"vault": "envs",
"account": "my.1password.com"
},
"production": {
"item": "jtm2ddhxqwx8orfgfjxknzp5re"
}
}
The development
and production
keys are the names of the environments you
want to use. You can add as many different environments with different names as
you want. The default environment is development
, but this can be configured
with the OP_ENV_NAME
environment variable.
The vault
key is optional but is recommended to reduce the number of
API calls to 1Password. The account
key is also optional and defaults to
whichever account op
is currently logged into.
The account
value can be any of the described by the 1password CLI
documentation. The item
and vault
values and the accepted formats are described
here
in the 1password CLI docs.
Once you have created the .1pass-envrc
file, you can load the environment
variables in a few different ways using 1pass-env
.
Command line:
$ node -r 1pass-env/config ./index.js
Programmatically with import
:
import '1pass-env/config';
or
import { config } from '1pass-env';
config();
Programmatically with require
:
require('1pass-env').config();
1password configuration
To configure the environment variables within 1password, you will need to create
a new item and add the desired variables as individual fields within the new
item. Fields with empty keys or values will be ignored. Fields are also ignored
if they do not match the pattern ^[A-Z0-9_]+$
.
API
config
Injects the environment variables into process.env
. The environment name can
also be passed as an argument to this function.
import { config } from '1pass-env';
config({ envName: 'staging' });
Limitations
This package does not (yet) support 1password Connect Server access.