{"id":42775342,"url":"https://github.com/dnunes/autoenvconfig","last_synced_at":"2026-01-29T22:06:32.943Z","repository":{"id":52166629,"uuid":"63574436","full_name":"dnunes/autoenvconfig","owner":"dnunes","description":"Environment config that Just Works™!","archived":false,"fork":false,"pushed_at":"2023-01-11T11:18:46.000Z","size":144,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-21T17:55:48.680Z","etag":null,"topics":["12-factor","12factors","configuration-by-environment","configuration-management","conventions","eventual-persistence","magic","persistence","schema","schema-files"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dnunes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-18T05:59:44.000Z","updated_at":"2020-03-30T18:17:17.000Z","dependencies_parsed_at":"2023-02-09T02:46:01.963Z","dependency_job_id":null,"html_url":"https://github.com/dnunes/autoenvconfig","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/dnunes/autoenvconfig","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnunes%2Fautoenvconfig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnunes%2Fautoenvconfig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnunes%2Fautoenvconfig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnunes%2Fautoenvconfig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dnunes","download_url":"https://codeload.github.com/dnunes/autoenvconfig/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dnunes%2Fautoenvconfig/sbom","scorecard":{"id":348853,"data":{"date":"2025-08-11","repo":{"name":"github.com/dnunes/autoenvconfig","commit":"559f4e1101ad1d471d7fc30ff6bc2b61d849ca07"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"36 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-9vvw-cc9w-f27h","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-h6ch-v84p-w6p9","Warn: Project is vulnerable to: GHSA-qrmc-fj45-qfc2","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-qh2h-chj9-jffq","Warn: Project is vulnerable to: GHSA-q42p-pg8m-cqh6","Warn: Project is vulnerable to: GHSA-w457-6q6x-cgp9","Warn: Project is vulnerable to: GHSA-62gr-4qp9-h98f","Warn: Project is vulnerable to: GHSA-f52g-6jhx-586p","Warn: Project is vulnerable to: GHSA-2cf5-4w76-r9qv","Warn: Project is vulnerable to: GHSA-3cqr-58rm-57f8","Warn: Project is vulnerable to: GHSA-g9r4-xpmj-mj65","Warn: Project is vulnerable to: GHSA-q2c6-c6pm-g3gh","Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44","Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988","Warn: Project is vulnerable to: GHSA-44pw-h2cw-w3vq","Warn: Project is vulnerable to: GHSA-jp4x-w63m-7wgm","Warn: Project is vulnerable to: GHSA-c429-5p7v-vgjp","Warn: Project is vulnerable to: GHSA-4hpf-3wq7-5rpr","Warn: Project is vulnerable to: GHSA-f522-ffg8-j8r6","Warn: Project is vulnerable to: GHSA-2pr6-76vf-7546","Warn: Project is vulnerable to: GHSA-8j8c-7jfh-h6hx","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-282f-qqgm-c34q","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-2m39-62fm-q8r3","Warn: Project is vulnerable to: GHSA-mf6x-7mm4-x2g7","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-xc7v-wxcw-j472"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T07:48:51.598Z","repository_id":52166629,"created_at":"2025-08-18T07:48:51.598Z","updated_at":"2025-08-18T07:48:51.598Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28886909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T21:06:44.224Z","status":"ssl_error","status_checked_at":"2026-01-29T21:06:42.160Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["12-factor","12factors","configuration-by-environment","configuration-management","conventions","eventual-persistence","magic","persistence","schema","schema-files"],"created_at":"2026-01-29T22:06:32.270Z","updated_at":"2026-01-29T22:06:32.925Z","avatar_url":"https://github.com/dnunes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"AutoEnvConfig\n=============\n### Environment config that Just Works™!\n\nStop worrying about the hassle of **loading environment config files everywhere**, **config files with missing entries** or **schemas that gets old when you forget to add a new config key to it**.\n\n**AutoEnvConfig** is a fully-tested\\*, no-nonsense, no-dependencies package to help you keep your ever expanding project under control. _\\*(bear with me on the beta features)_\n\n**AutoEnvConfig** was designed with simple but very powerful goals:\n\n* **Blazingly fast**: it caches everything it can, loads your files only once and check your schema on load, not on usage;\n* **No extra configuration needed**: this package follows the idea of _convention over configuration_, so it keeps the required environment files to a minimum and there is nothing to thinker with before start using it;\n* **Never out of sync**: when loading the environment configuration file, it checks the schema for *missing* or *extra* keys, alerting you when you are missing some key in your config or in your schema file;\n* **Auto load of the right config file**: you can set the root path of the project in the environment config file and it will load automatically;\n* **Possible local [eventual persistence](#eventualpersistence)** (beta): you can overwrite data by code and have it persisted across restarts (or even deploys!) whenever needed. Things like general settings' dashboard for a small project gets really fast and easy (look, ma!, no databases!). You can backup your persistence file whenever you need or simply merge it with your env config periodically to make changes definitive.\n\nTo use it right away, [npm install it](#installation) and follow the super simple [Quick Start Guide](#quickstart).\n\nFor more details, check out the [Conventions](#conventions) and [Public Methods API](#methods).\n\n\n## \u003ca id=\"installation\"\u003eInstallation\u003c/a\u003e\nThe simplest way to install this package is using [npm](http://www.npmjs.com/):\n```bash\n$ npm i AutoEnvConfig\n```\n\nYou can also manually download any release from [our GitHub repository](https://github.com/dnunes/autoenvconfig/) on the [releases page](https://github.com/dnunes/autoenvconfig/releases/) or try the [latest stable source](https://github.com/dnunes/autoenvconfig/zipball/master). The links and info are also available on [the project page](http://dnunes.com/autoenvconfig/).\n\n\n## \u003ca id=\"quickstart\"\u003eQuick Start Guide\u003c/a\u003e\n\nThere are just four steps needed to start using this package:\n\n1. Create a folder named `envs` on your project's root;\n2. Create a [`config.schema`](#sampleschema) file with your schema;\n3. Create a [`ENVNAME.json`](#sampleenv) file for your environments with their specific configuration (where `ENVNAME` is whatever name you wish to use);\n4. Load the package. Done.\n\nIn your code:\n\n```javascript\nconst AutoEnvConfig = require('autoenvconfig');\n\nlet isValuePresent = AutoEnvConfig.has('deep.key.supported'));\nif (isValuePresent) {\n  let valueFromConfig = AutoEnvConfig.get('deep.key.supported'));\n  console.log(valueFromConfig); //\"myValue\"\n}\n\nlet itDoesDefaults = AutoEnvConfig.get('invalid.key', 'default');\nconsole.log(itDoesDefaults); //\"default\"\n```\n\n## \u003ca id=\"conventions\"\u003eConventions\u003c/a\u003e\n\n### \u003ca id=\"magicload\"\u003eMagic Loading\u003c/a\u003e\n\nOne of the nicest features of the package is that you don't need to specify the environment, as it will magicly detect and load the correct file based on some values. This auto generated instance is called [_magic instance_](#magicload).\n\nFor the magic load to happen, your [`config.schema`](#sampleschema) and [`ENVNAME.json`](#sampleenv) files must have a `_path` key with the path of your project's root. It will find the correct environment checking this value by default. You can, however, safely ignore this convention and manually specify the file name if needed.\n\n### \u003ca id=\"magicload\"\u003eSchema and Environment File formats\u003c/a\u003e\nThe schema and environment config files are simple JSON files. The only limit for the _keys_ is the dot character (\"`.`\") which is forbidden (because it is used as a separator when loading), but I suggest you to limit your keys to alphanumeric chars for simplicity.\n\nIn the schema files, every key _MUST_ be prefixed with either `#` or `?`, indicating mandatory or optional key, respectively.\n\n\n## \u003ca id=\"samples\"\u003eSample Files\u003c/a\u003e\n\n### \u003ca id=\"sampleschema\"\u003eSample config.schema\u003c/a\u003e\n```json\n{\n  \"# _path\": \"\",\n\n  \"# id\": \"\",\n  \"# envtype\": \"\",\n\n  \"# requiredKey\": \"\",\n  \"? deep\": {\n    \"? key\": {\n      \"# supported\": \"myValue\",\n      \"? asWell\": \"otherValue\"\n    }\n  }\n}\n```\n\nYou can have a required key inside an optional object (in this sample, the `supported` required key is inside optional `deep` and `key` objects), so that you can omit the whole object (it will use the defaults), but if it exists in the environment config file, it must include at least these required keys.\n\n### \u003ca id=\"sampleenv\"\u003eSample ENVNAME.json\u003c/a\u003e\n```json\n{\n  \"_path\": \"/home/dnunes/code/node/autoenvconfig\",\n\n  \"id\": \"dev\",\n  \"envtype\": \"local\",\n\n  \"requiredKey\": \"value\"\n}\n```\n\n\n## \u003ca id=\"eventualpersistence\"\u003eEventual Persistence\u003c/a\u003e\n\nIf you need to overwrite some settings through code you can use [`AutoEnvConfig.set(\u003ckey\u003e, \u003cvalue\u003e))`](#mautoset) method (or its [instance counterpart](#minsset)). This change will not survive restarts or new deploys, though. For any time you need to have something persisted across local restarts or even deploys, you can now use [`AutoEnvConfig.persist(\u003ckey\u003e, \u003cvalue\u003e))`](#mautoper) and it will be loaded automatically on the next run/instance creation.\n\nThe persistence file defaults to the path `envs/ENVNAME.persist.json` but you can freely configure it using the `_persistFile` key in your [`ENVNAME.json`](#sampleenv). The path resolution defaults to the root of your project, so a value of `custom.persist.json` for the `_persistFile` key would create the persistence file in your project's root folder.\n\nTo avoid filling your I/O with multiple writes to disk, it will only persist the data periodically and efficiently using a _minimum interval_ setting and _dirty detection_ logic, so it's safe to call persist methods multiples times a second with no impact on performance whatsoever. An even improved logic suitable for eventual bursts in settings will be implemented in the future.\n\n\n## \u003ca id=\"methods\"\u003eMethods\u003c/a\u003e\n\nAll the methods can be called in a specific instance (from a `AutoEnvConfig.load` call) or in the [_magic instance_](#magicload). You can save a reference for the [_magic instance_](#magicload) using a `AutoEnvConfig.load()` call and call methods on this instance as well and it will work exactly the same as calling the methods directly on the package. The only exception is the \"AutoEnvConfig.enablePersistence()\" and \"AutoEnvConfig.disablePersistence()\"\n\n### \u003ca id=\"magicmethods\"\u003eMagic Methods\u003c/a\u003e\n\n- \u003ca id=\"mautoload\"\u003e`AutoEnvConfig.load([envName [, forceNew = false]])`\u003c/a\u003e\nThis method will return a new instance of `AutoEnvConfig`. If you ommit the `[envName]` parameter, it will try to [_magic load_](#magicload) the right env file. If you pass the `[envName]` parameter, it will just return the config for the specified env. It returns false if it cannot find a suitable environment config.\nIf `[forceNew]` is `false`, it will reuse the first instance for the same `[envName]` created before.\n\n- \u003ca id=\"mautoget\"\u003e`AutoEnvConfig.get(\u003ckey\u003e[, defaultValueIfNotPresent])`\u003c/a\u003e\nThis method runs [`\u003cInstance\u003e.get(\u003ckey\u003e[, defaultValueIfNotPresent])`](#minsget) on the [_magic instance_](#magicload).\n\n- \u003ca id=\"mautohas\"\u003e`AutoEnvConfig.has(\u003ckey\u003e)`\u003c/a\u003e\nThis method runs [`\u003cInstance\u003e.has(\u003ckey\u003e)`](#minshas) on the [_magic instance_](#magicload).\n\n- \u003ca id=\"mautoset\"\u003e`AutoEnvConfig.set(\u003ckey\u003e, \u003cvalue\u003e)`\u003c/a\u003e\nThis method runs [`\u003cInstance\u003e.set(\u003ckey\u003e, \u003cvalue\u003e))`](#minsset) on the [_magic instance_](#magicload).\n\n- \u003ca id=\"mautoenable\"\u003e`AutoEnvConfig.enablePersistence([minInterval = 120[, affectMagic = true]])`\u003c/a\u003e\nThis method set persistence global setting to _on_. It will affect all new instances created after setting it.\nYou can set the minimum interval between disk writes using the `[minInterval]` parameter.\nIf `[affectMagic]` is `true`, it will also enable persistence on the current [_magic instance_](#magicload), if any.\n\n- \u003ca id=\"mautodisable\"\u003e`AutoEnvConfig.disablePersistence([affectMagic = true])`\u003c/a\u003e\nThis method set persistence global setting to _off_. It will affect all new instances created after setting it. If `[affectMagic]` is `true`, it will also disable persistence on the current [_magic instance_](#magicload), if any.\n\n- \u003ca id=\"mautoper\"\u003e`AutoEnvConfig.persist(\u003ckey\u003e, \u003cvalue\u003e)`\u003c/a\u003e\nThis method runs [`\u003cInstance\u003e.persist(\u003ckey\u003e, \u003cvalue\u003e))`](#minsper) on a [_magic instance_](#magicload).\n\n### \u003ca id=\"instancemethods\"\u003eInstance Methods\u003c/a\u003e\n\n- \u003ca id=\"minsload\"\u003e`\u003cInstance\u003e.load([envName [, forceNew = false]])`\u003c/a\u003e\nThe same as [`AutoEnvConfig.load([envName [, forceNew = false]])`](#mautoload).\n\n- \u003ca id=\"minsget\"\u003e`\u003cInstance\u003e.get(\u003ckey\u003e[, defaultValueIfNotPresent])`\u003c/a\u003e\nThis method will return the value of `\u003ckey\u003e` in the `\u003cInstance\u003e` object. If `\u003ckey\u003e` is not present in the `\u003cInstance\u003e` object, it will either return `[defaultValueIfNotPresent]` or throw an error if there the default value parameter was ommitted.\n\n-  \u003ca id=\"minshas\"\u003e`\u003cInstance\u003e.has(\u003ckey\u003e)`\u003c/a\u003e\nThis method will return `true` if the `\u003ckey\u003e` is present in the `\u003cInstance\u003e` object or `false` if not.\n\n- \u003ca id=\"minsset\"\u003e`\u003cInstance\u003e.set(\u003ckey\u003e, \u003cvalue\u003e)`\u003c/a\u003e\nThis method will replace the in-memory contents of `\u003ckey\u003e` for the `\u003cInstance\u003e` object with `\u003cvalue\u003e`.\n\n- \u003ca id=\"minsper\"\u003e`\u003cInstance\u003e.persist(\u003ckey\u003e, \u003cvalue\u003e)`\u003c/a\u003e\nThis method will replace the in-memory contents of `\u003ckey\u003e` for the `\u003cInstance\u003e` object with `\u003cvalue\u003e` and will [eventually persist](#eventualpersistence) it on disk.\n\n- \u003ca id=\"minsenable\"\u003e`\u003cInstance\u003e.enablePersistence([minInterval = 120[, overrideMemory = true]])`\u003c/a\u003e\nThis method enables persistence on `\u003cInstance\u003e`.\nYou can set the minimum interval between disk writes using the `[minInterval]` parameter.\nIf `overrideMemory` is `true`, it will also merge the in-memory config with the data loaded from the persistence file at the time persistence is enabled. It will load the persistence file on instance creation if [global persistence](#mautoenable) setting in _on_.\n\n- \u003ca id=\"minsdisable\"\u003e`\u003cInstance\u003e.disablePersistence()`\u003c/a\u003e\nThis method disables persistence on `\u003cInstace\u003e`.\n\n\n## \u003ca id=\"advancedusage\"\u003eAdvanced Usage\u003c/a\u003e\n\nYou can override the default file and bypass the environment file search routine by calling the `load` method:\n```javascript\n//will load envs/other.json\nAutoEnvConfig = require('autoenvconfig').load('other');\nAutoEnvConfig.get('key.in.other.file');\n```\n\nYou can also load multiple configs if ever needed:\n```javascript\nAutoEnvConfig = require('autoenvconfig');\n\n//load the right env based on \"_path\" config value\nlet rightConfig = AutoEnvConfig.load();\nrightConfig.get('key.in.right.file');\n\n//load \"envs/other.json\"\nlet otherConfig = AutoEnvConfig.load('other');\notherConfig.get('key.in.other.file');\n\n//load \"envs/oneMore.json\"\nlet oneMoreConfig = rightConfig.load('oneMore.json');\noneMoreConfig.get('key.in.onemore.file');\n```\nNote that you can call `load` directly on the package or on any `AutoEnvConfig` object returned by the `load` method.\n\n\n## \u003ca id=\"releaseh\"\u003eRelease History\u003c/a\u003e\n\n* [1.0.0](https://github.com/dnunes/autoenvconfig/releases/tag/v1.0.0) Added local [eventual persistence](#eventualpersistence) (beta) and basic unit tests this new feature;\n\n* [0.1.6](https://github.com/dnunes/autoenvconfig/releases/tag/v0.1.6) Added unit tests for \"[set](#mautoset)\" methods and finished pending test for internal cache;\n\n* [0.1.5](https://github.com/dnunes/autoenvconfig/releases/tag/v0.1.5) Added \"[set](#mautoset)\" methods and started improving documentation for API. Missing unit tests on it;\n\n* [0.1.4](https://github.com/dnunes/autoenvconfig/releases/tag/v0.1.4) 100% functions coverage and almost 100% branch coverage;\n\n* [0.1.3](https://github.com/dnunes/autoenvconfig/releases/tag/v0.1.3) Removed \"get\" aliases, fixed \"[instance.get()](#minsget)\" and added \"[has](#mautohas)\" methods;\n\n* [0.1.2](https://github.com/dnunes/autoenvconfig/releases/tag/v0.1.2) Improved syntaxerror handling in schema files;\n\n* [0.1.1](https://github.com/dnunes/autoenvconfig/releases/tag/v0.1.1) Bugfix for using natural expected behavior after [.load('name')](#mautoload);\n\n* [0.1.0](https://github.com/dnunes/autoenvconfig/releases/tag/v0.1.0) Initial release.\n\n\n## \u003ca id=\"credits\"\u003eCredits\u003c/a\u003e\n\nCreated and maintained (with much ♡) by [diego nunes](http://dnunes.com)\n\nDonations with Bitcoin to _1PQyeHqusUj3SuTmw6DPqWSHptVHkYZ33R_:\n\n![1PQyeHqusUj3SuTmw6DPqWSHptVHkYZ33R](http://chart.apis.google.com/chart?cht=qr\u0026chs=200x200\u0026chl=bitcoin:1PQyeHqusUj3SuTmw6DPqWSHptVHkYZ33R)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnunes%2Fautoenvconfig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdnunes%2Fautoenvconfig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdnunes%2Fautoenvconfig/lists"}