- Notifications
You must be signed in to change notification settings - Fork0
du5rte/secrets
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Secret handler for Node.js 🗝️
Secret is a zero-dependency package to handle secrets in Node.js from a.env
file intoprocess.env
. Inspired bydotenv.
yarn add secrets
Create a.env
file in the root directory of your project.It supports 3 types of.env
files.env.json
and.env.js
.env
supports entries in the form ofNAME=VALUE
.
NODE_ENV=developmentPORT=3000SECRET=my_super_secret
.env.json
supports JSON
{"NODE_ENV":"development","PORT":3000,"SECRET":"my_super_secret"}
.env.js
supports JavaScript
module.exports={NODE_ENV:'development',PORT:3000,SECRET:'my_super_secret',}
That's it. As early as possible in your application, requiresecrets
.process.env
should have the keys and values you defined in your.env
file.
// setups entries in process.envimport'secrets'// or require('secrets')...// which can be access anywhere in your codeapp.listen(process.env.PORT,function(){console.log('Server running on localhost:'+process.env.PORT)})
Verify environment variables are loaded inprocess.env
secret.verify('PORT','SECRET')// throw error if it's missing
module.exports = { presets: ['module:metro-react-native-babel-preset'], plugins: ['secrets/babel-plugin-secrets'],}
To create secret.env
environment files on demands on your github actions checkoutdu5rte/create-secret-file
Secrets should be place in the root of the project but it searches for.env
files the same way node searches fornode_modules
folders, the closer to the root the higher the priority.
/Users/user/myProjects/myAwesomeProject/.env/Users/user/myProjects/.env/Users/user/.env/Users/.env
The parsing engine currently supports the following rules:
BASIC=basic
becomes{BASIC: 'basic'}
- empty lines are skipped
- lines beginning with
#
are treated as comments - empty values become empty strings (
EMPTY=
becomes{EMPTY: ''}
) - single and double quoted values are escaped (
SINGLE_QUOTE='quoted'
becomes{SINGLE_QUOTE: "quoted"}
) - new lines are expanded if in double quotes (
MULTILINE="new\nline"
becomes
{MULTILINE: 'newline'}
- inner quotes are maintained (think JSON) (
JSON={"foo": "bar"}
becomes{JSON:"{\"foo\": \"bar\"}"
)
No! 🙅♂️, do not commit your.env
files! Adding a.gitignore
file to your repository should be your first line of defense against accidentally leaking any secrets.read more
SeeLICENSE
About
Secrets handler for Node.js 🗝️