{"_id":"getenv","_rev":"4515327","name":"getenv","description":"Get and typecast environment variables.","dist-tags":{"latest":"2.0.0"},"maintainers":[{"name":"ctavan","email":""}],"time":{"modified":"2026-04-09T12:50:07.000Z","created":"2012-04-17T20:22:53.290Z","2.0.0":"2025-05-06T21:12:20.488Z","1.0.0":"2019-10-09T09:35:38.261Z","0.7.0":"2016-10-06T16:24:14.887Z","0.6.0":"2016-01-11T19:36:38.714Z","0.5.0":"2014-12-12T15:02:37.335Z","0.4.0":"2014-11-24T15:28:49.193Z","0.3.0":"2012-08-15T14:15:48.909Z","0.2.0":"2012-04-25T14:34:44.078Z","0.1.0":"2012-04-17T20:22:53.290Z"},"users":{"rhyslbw":true,"itesic":true,"geraldhart100":true},"author":{"name":"Christoph Tavan","email":"dev@tavan.de"},"repository":{"type":"git","url":"git://github.com/ctavan/node-getenv.git"},"versions":{"2.0.0":{"name":"getenv","description":"Get and typecast environment variables.","author":{"name":"Christoph Tavan","email":"dev@tavan.de"},"contributors":[{"name":"Moritz von Hase"},{"name":"Jonas Dohse","email":"jonas@dohse.ch"},{"name":"Jan Lehnardt"},{"name":"Tim Ruffles","email":"timruffles@gmail.com"},{"name":"Ashwani Agarwal","email":"ashwani.a@outlook.com"}],"version":"2.0.0","license":"MIT","homepage":"https://github.com/ctavan/node-getenv","repository":{"type":"git","url":"git://github.com/ctavan/node-getenv.git"},"main":"index.js","scripts":{"prettier":"prettier --check .","unit":"bash -ec 'for F in test/*.js; do echo \"$F\": ; node $F; done;'","test":"npm run prettier && npm run unit"},"engines":{"node":">=6"},"dependencies":{},"devDependencies":{"prettier":"^3.5.3"},"keywords":["env","environment","config","configuration","12factor"],"_id":"getenv@2.0.0","gitHead":"7424d05d3db92fd29f6097f63ec3d298135c6a0f","bugs":{"url":"https://github.com/ctavan/node-getenv/issues"},"_nodeVersion":"23.11.0","_npmVersion":"10.9.2","dist":{"shasum":"b1698c7b0f29588f4577d06c42c73a5b475c69e0","size":4561,"noattachment":false,"key":"/getenv/-/getenv-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/getenv/download/getenv-2.0.0.tgz"},"_npmUser":{"name":"ctavan","email":"dev@tavan.de"},"directories":{},"maintainers":[{"name":"ctavan","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/getenv_2.0.0_1746565940288_0.5863545083844746"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-05-06T21:12:20.488Z","publish_time":1746565940488,"_source_registry_name":"default","_cnpm_publish_time":1746565940488},"1.0.0":{"name":"getenv","description":"Get and typecast environment variables.","author":{"name":"Christoph Tavan","email":"dev@tavan.de"},"contributors":[{"name":"Moritz von Hase"},{"name":"Jonas Dohse","email":"jonas@dohse.ch"},{"name":"Jan Lehnardt"},{"name":"Tim Ruffles","email":"timruffles@gmail.com"},{"name":"Ashwani Agarwal","email":"ashwani.a@outlook.com"}],"version":"1.0.0","license":"MIT","homepage":"https://github.com/ctavan/node-getenv","repository":{"type":"git","url":"git://github.com/ctavan/node-getenv.git"},"main":"index.js","scripts":{"prettier":"prettier --write *.{js,md} **/*.js","test":"bash -ec 'for F in test/*.js; do echo \"$F\": ; node $F; done;'"},"engines":{"node":">=6"},"dependencies":{},"devDependencies":{"prettier":"^1.18.2"},"keywords":["env","environment","config","configuration","12factor"],"gitHead":"98da607b2003275fa0cf8d1134dc5afb5d030666","bugs":{"url":"https://github.com/ctavan/node-getenv/issues"},"_id":"getenv@1.0.0","_nodeVersion":"12.10.0","_npmVersion":"6.11.3","_npmUser":{"name":"ctavan","email":"dev@tavan.de"},"dist":{"shasum":"874f2e7544fbca53c7a4738f37de8605c3fcfc31","size":4013,"noattachment":false,"key":"/getenv/-/getenv-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/getenv/download/getenv-1.0.0.tgz"},"maintainers":[{"name":"ctavan","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/getenv_1.0.0_1570613738135_0.15263361244463125"},"_hasShrinkwrap":false,"publish_time":1570613738261,"_cnpm_publish_time":1570613738261},"0.7.0":{"name":"getenv","description":"Get and typecast environment variables.","author":{"name":"Christoph Tavan","email":"dev@tavan.de"},"contributors":[{"name":"Moritz von Hase"},{"name":"Jonas Dohse","email":"jonas@dohse.ch"},{"name":"Jan Lehnardt"},{"name":"Tim Ruffles","email":"timruffles@gmail.com"},{"name":"Ashwani Agarwal","email":"ashwani.a@outlook.com"}],"version":"0.7.0","homepage":"https://github.com/ctavan/node-getenv","repository":{"type":"git","url":"git://github.com/ctavan/node-getenv.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":"*"},"dependencies":{},"devDependencies":{},"keywords":["env","environment","config","configuration","12factor"],"gitHead":"82cb9fd68006090994daa14c2e6c2f9cd14b0ecc","bugs":{"url":"https://github.com/ctavan/node-getenv/issues"},"_id":"getenv@0.7.0","_shasum":"39b91838707e2086fd1cf6ef8777d1c93e14649e","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.5.0","_npmUser":{"name":"ctavan","email":"dev@tavan.de"},"maintainers":[{"name":"ctavan","email":""}],"dist":{"shasum":"39b91838707e2086fd1cf6ef8777d1c93e14649e","size":5461,"noattachment":false,"key":"/getenv/-/getenv-0.7.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/getenv/download/getenv-0.7.0.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/getenv-0.7.0.tgz_1475771052413_0.6985008402261883"},"directories":{},"publish_time":1475771054887,"_cnpm_publish_time":1475771054887,"_hasShrinkwrap":false},"0.6.0":{"name":"getenv","description":"Get and typecast environment variables.","author":{"name":"Christoph Tavan","email":"dev@tavan.de"},"contributors":[{"name":"Moritz von Hase"},{"name":"Jonas Dohse","email":"jonas@dohse.ch"},{"name":"Jan Lehnardt"},{"name":"Tim Ruffles","email":"timruffles@gmail.com"}],"version":"0.6.0","homepage":"https://github.com/ctavan/node-getenv","repository":{"type":"git","url":"git://github.com/ctavan/node-getenv.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":"*"},"dependencies":{},"devDependencies":{},"keywords":["env","environment","config","configuration","12factor"],"gitHead":"9a9796b8d212dba1c3d8caaad1fbbc023a802319","bugs":{"url":"https://github.com/ctavan/node-getenv/issues"},"_id":"getenv@0.6.0","_shasum":"481a3517746e74b38f87c5d70e806e105af54df5","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"ctavan","email":"dev@tavan.de"},"maintainers":[{"name":"ctavan","email":""}],"dist":{"shasum":"481a3517746e74b38f87c5d70e806e105af54df5","size":5148,"noattachment":false,"key":"/getenv/-/getenv-0.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/getenv/download/getenv-0.6.0.tgz"},"directories":{},"publish_time":1452540998714,"_cnpm_publish_time":1452540998714,"_hasShrinkwrap":false},"0.5.0":{"name":"getenv","description":"Get and typecast environment variables.","author":{"name":"Christoph Tavan","email":"dev@tavan.de"},"contributors":[{"name":"Moritz von Hase"},{"name":"Jonas Dohse","email":"jonas@dohse.ch"},{"name":"Jan Lehnardt"},{"name":"Tim Ruffles","email":"timruffles@gmail.com"}],"version":"0.5.0","homepage":"https://github.com/ctavan/node-getenv","repository":{"type":"git","url":"git://github.com/ctavan/node-getenv.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":"*"},"dependencies":{},"devDependencies":{},"keywords":["env","environment","config","configuration","12factor"],"bugs":{"url":"https://github.com/ctavan/node-getenv/issues"},"_id":"getenv@0.5.0","dist":{"shasum":"73725a7679a3eb314b49b4b0c794b1bd06104525","size":5004,"noattachment":false,"key":"/getenv/-/getenv-0.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/getenv/download/getenv-0.5.0.tgz"},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"ctavan","email":"dev@tavan.de"},"maintainers":[{"name":"ctavan","email":""}],"directories":{},"publish_time":1418396557335,"_cnpm_publish_time":1418396557335,"_hasShrinkwrap":false},"0.4.0":{"name":"getenv","description":"Get and typecast environment variables.","author":{"name":"Christoph Tavan","email":"dev@tavan.de"},"contributors":[{"name":"Moritz von Hase"},{"name":"Jonas Dohse","email":"jonas@dohse.ch"},{"name":"Jan Lehnardt"},{"name":"Tim Ruffles","email":"timruffles@gmail.com"}],"version":"0.4.0","homepage":"https://github.com/ctavan/node-getenv","repository":{"type":"git","url":"git://github.com/ctavan/node-getenv.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":"*"},"dependencies":{},"devDependencies":{},"keywords":["env","environment","config","configuration","12factor"],"bugs":{"url":"https://github.com/ctavan/node-getenv/issues"},"_id":"getenv@0.4.0","dist":{"shasum":"a46418cda2e755524e3e666b91130b3472fd72f8","size":4645,"noattachment":false,"key":"/getenv/-/getenv-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/getenv/download/getenv-0.4.0.tgz"},"_from":".","_npmVersion":"1.3.24","_npmUser":{"name":"ctavan","email":"dev@tavan.de"},"maintainers":[{"name":"ctavan","email":""}],"directories":{},"publish_time":1416842929193,"_cnpm_publish_time":1416842929193,"_hasShrinkwrap":false},"0.3.0":{"name":"getenv","description":"Get and typecast environment variables.","author":{"name":"Christoph Tavan","email":"dev@tavan.de"},"contributors":[{"name":"Moritz von Hase"},{"name":"Jonas Dohse","email":"jonas@dohse.ch"},{"name":"Jan Lehnardt"}],"version":"0.3.0","homepage":"https://github.com/ctavan/node-getenv","repository":{"type":"git","url":"git://github.com/ctavan/node-getenv.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":"*"},"dependencies":{},"devDependencies":{},"keywords":["env","environment","config","configuration","12factor"],"_npmUser":{"name":"ctavan","email":"dev@tavan.de"},"_id":"getenv@0.3.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"b1ef3f97e9dc5546782859b222b5659a0c78eeaa","size":4310,"noattachment":false,"key":"/getenv/-/getenv-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/getenv/download/getenv-0.3.0.tgz"},"maintainers":[{"name":"ctavan","email":""}],"directories":{},"publish_time":1345040148909,"_cnpm_publish_time":1345040148909,"_hasShrinkwrap":false},"0.2.0":{"name":"getenv","description":"Get and typecast environment variables.","author":{"name":"Christoph Tavan","email":"dev@tavan.de"},"contributors":[{"name":"Moritz von Hase"},{"name":"Jonas Dohse","email":"jonas@dohse.ch"}],"version":"0.2.0","homepage":"https://github.com/ctavan/node-getenv","repository":{"type":"git","url":"git://github.com/ctavan/node-getenv.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":"*"},"dependencies":{},"devDependencies":{},"keywords":["env","environment","config","configuration","12factor"],"_npmUser":{"name":"ctavan","email":"dev@tavan.de"},"_id":"getenv@0.2.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"70e31eda00ce34f714c87277a09ad12b6384560e","size":3656,"noattachment":false,"key":"/getenv/-/getenv-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/getenv/download/getenv-0.2.0.tgz"},"maintainers":[{"name":"ctavan","email":""}],"directories":{},"publish_time":1335364484078,"_cnpm_publish_time":1335364484078,"_hasShrinkwrap":false},"0.1.0":{"name":"getenv","description":"Get and typecast environment variables.","author":{"name":"Christoph Tavan","email":"dev@tavan.de"},"contributors":[{"name":"Moritz von Hase"},{"name":"Jonas Dohse","email":"jonas@dohse.ch"}],"version":"0.1.0","homepage":"https://github.com/ctavan/getenv","repository":{"type":"git","url":"git://github.com/ctavan/getenv.git"},"main":"./index","scripts":{"test":"make test"},"engines":{"node":"*"},"dependencies":{},"devDependencies":{},"keywords":["env","environment","config","configuration","12factor"],"_npmUser":{"name":"ctavan","email":"dev@tavan.de"},"_id":"getenv@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.12","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"0449dd109eec142ab9cdaf163a567f320c7b25a3","size":3644,"noattachment":false,"key":"/getenv/-/getenv-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/getenv/download/getenv-0.1.0.tgz"},"maintainers":[{"name":"ctavan","email":""}],"directories":{},"publish_time":1334694173290,"_cnpm_publish_time":1334694173290,"_hasShrinkwrap":false}},"readme":"# getenv\n\n[![Build Status](https://secure.travis-ci.org/ctavan/node-getenv.png)](http://travis-ci.org/ctavan/node-getenv)\n\nHelper to get and typecast environment variables. This is especially useful if you are building [Twelve-Factor-Apps](http://www.12factor.net/) where all configuration is stored in the environment.\n\n## Installation\n\n```\nnpm install getenv\n```\n\nTypeScript types are available from the `@types/getenv` module.\n\n## Usage\n\nSet environment variables:\n\n```bash\nexport HTTP_HOST=\"localhost\"\nexport HTTP_PORT=8080\nexport HTTP_START=true\nexport AB_TEST_RATIO=0.5\nexport KEYWORDS=\"sports,business\"\nexport PRIMES=\"2,3,5,7\"\n```\n\nGet and use them:\n\n```javascript\nconst getenv = require('getenv');\n\nconst host = getenv('HTTP_HOST'); // same as getenv.string('HTTP_HOST');\nconst port = getenv.int('HTTP_PORT');\nconst start = getenv.bool('HTTP_START');\n\nif (start === true) {\n  // const server = http.createServer();\n  // server.listen(port, host);\n}\n\nconst abTestRatio = getenv.float('AB_TEST_RATIO');\n\nif (Math.random() < abTestRatio) {\n  // test A\n} else {\n  // test B\n}\n\nconst keywords = getenv.array('KEYWORDS');\nkeywords.forEach(function (keyword) {\n  // console.log(keyword);\n});\n\nconst primes = getenv.array('PRIMES', 'int');\nprimes.forEach(function (prime) {\n  // console.log(prime, typeof prime);\n});\n```\n\n## Methods\n\nAll methods accept a fallback value that will be returned if the requested environment variable is not set. If the fallback value is omitted and if the requested environment variable does not exist, an exception is thrown.\n\n### env(name, [fallback])\n\nAlias for `env.string(name, [fallback])`.\n\n### env.string(name, [fallback])\n\nReturn as string.\n\n### env.int(name, [fallback])\n\nReturn as integer number.\n\n### env.float(name, [fallback])\n\nReturn as float number.\n\n### env.bool(name, [fallback])\n\nReturn as boolean. Only allows true/false as valid values.\n\n### env.boolish(name, [fallback])\n\nReturn as boolean. Allows true/false/1/0 as valid values.\n\n### env.array(name, [type], [fallback], [separator])\n\nSplit value of the environment variable at each comma (default) and return the resulting array where each value has been typecast according to the `type` parameter. An array can be provided as `fallback` and a regular expression can be provided as `separator` in case commas don't fit.\n\n### env.multi({spec})\n\nReturn a list of environment variables based on a `spec`:\n\n```javascript\nconst config = getenv.multi({\n  foo: 'FOO', // throws if FOO doesn't exist\n  bar: ['BAR', 'defaultval'], // set a default value\n  baz: ['BAZ', 'defaultval', 'string'], // parse into type\n  quux: ['QUUX', undefined, 'int'], // parse & throw\n});\n```\n\n### env.url(name, [fallback])\n\nReturn a parsed URL as per Node's `require(\"url\").parse`. N.B `url` doesn't validate URLs, so be sure it includes a protocol or you'll get deeply weird results.\n\n```javascript\nconst serviceUrl = getenv.url('SERVICE_URL');\n\nserviceUrl.port; // parsed port number\n```\n\n### env.disableFallbacks()\n\nDisallows fallbacks in environments where you don't want to rely on brittle development defaults (e.g production, integration testing). For example, to disable fallbacks if we indicate production via `NODE_ENV`:\n\n```javascript\nif (process.env.NODE_ENV === 'production') {\n  getenv.disableFallbacks();\n}\n```\n\n### env.disableErrors()\n\n`getenv` won't throw any error. If a fallback value is provided, that will be returned, else `undefined` is returned.\n\n```javascript\ngetenv.disableErrors();\nconsole.log(getenv('RANDOM'));\n// undefined\n```\n\n### env.enableErrors()\n\nRevert the effect of `disableErrors()`.\n\n```javascript\ngetenv.disableErrors();\nconsole.log(getenv('RANDOM'));\n// undefined\n\ngetenv.enableErrors();\nconsole.log(getenv('RANDOM'));\n// Error: GetEnv.Nonexistent: RANDOM does not exist and no fallback value provided.\n```\n\n## Changelog\n\n### v2.0.0\n\n- Allow any case for True/False boolean strings `env.bool()` (#22)\n\n### v1.1.0\n\n- Add separator option to `env.array()` (#19)\n\n### v1.0.0\n\n- Drop support for Node.js older than 6.\n- Modernize code.\n- Add MIT License in package.json and LICENSE.md.\n\n### v0.7.0\n\n- Add env.disableErrors() / getenv.enableErrors() support.\n\n### v0.6.0\n\n- Added getenv.boolish() support.\n\n### v0.5.0\n\n- Add getenv.url() support.\n\n### v0.4.0\n\n- Add getenv.disableFallbacks() support.\n\n### v0.3.0\n\n- Add getenv.multi() support.\n\n### v0.2.0\n\n- Rename git repository\n\n### v0.1.0\n\n- Initial release\n\n## Authors\n\n- Moritz von Hase (initial author)\n- Christoph Tavan <dev@tavan.de>\n- Jonas Dohse <jonas@dohse.ch>\n- Jan Lehnardt (@janl): `getenv.multi()` support.\n- Tim Ruffles <timruffles@gmail.com>: `disableFallbacks()`, `url()`\n- Ashwani Agarwal <ashwani.a@outlook.com>: `disableErrors()`, `enableErrors()`\n\n## License\n\nThis module is licensed under the MIT license.\n","_attachments":{},"homepage":"https://github.com/ctavan/node-getenv","bugs":{"url":"https://github.com/ctavan/node-getenv/issues"},"license":"MIT"}