Skip to content
/ yml Public

Read Yaml files based on NODE_ENV or passed env + support for encryption

Notifications You must be signed in to change notification settings

arashkay/yml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yml

Build Status npm version Coverage Status

Load a yaml file in Node.js

It can load a yaml file based on NODE_ENV or passed env (or using development as default). It uses ursa for encryption.

It can deep merge default section and env section of your yaml perfectly.

You can have yaml file

default: 
  username: Admin
  password: Password
  days:
    - Monday
    - Tuesday
    - Friday
  devices:
    android: true
    ios: false
development:
  password: local
  devices:
    ios: true
production:
  password: decrypt(A7YzqIBjGgXWKA9yl81hgSal7djwBuXK5nBS15JswtzyxKWXilS8buiTZ2XqK9czq)
configs = Yml.load 'config.yml'
# { username: 'Admin', password: 'local', days: ['Monday', 'Tuesday', 'Friday'], devices: { android: true, ios: true } }
configs = Yml.load 'config.yml', 'production', { key: 'security.key.pem' }
# { username: 'Admin', password: 'decrypted_pass', days: ['Monday', 'Tuesday', 'Friday'], devices: { android: true, ios: false } }

If you have defined NODE_ENV in your system, you dont need to pass the env parameter.

# if NODE_ENV = 'production' is set in server, these lines have same result
configs = Yml.load 'config.yml', { key: 'security.key.pem' }
configs = Yml.load 'config.yml', 'production', { key: 'security.key.pem' }
# { username: 'Admin', password: 'decrypted_pass', days: ['Monday', 'Tuesday', 'Friday'], devices: { android: true, ios: false } }

Encryption

You should create public/private keys with a command like this:

openssl rsa -in security.key.pem -pubout -out security.pub 

You can store public key in the machine which responsible for generating the encrypted information. And use private key in the machine which should load the .yml file.

You can use the helper method provided in the library to generate the encrypted phrase, instead of storing the password or critical information.

Yml = require 'yml'
Yml.encrypt 'password', 'security.pub'
# A7YzqIBjGgXWKA9yl81hgSal7djwBuXK5nBS15JswtzyxKWXilS8buiTZ2XqK9czq
# You can store this value in your .yml file

You can read more about encryption here.

About

Read Yaml files based on NODE_ENV or passed env + support for encryption

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published