Skip to content

v7.0.0

Compare
Choose a tag to compare
@af af released this 30 Jan 21:19
· 79 commits to main since this release

Version 7 is a major release with several breaking changes. If you've been using the recommended "strict mode" from previous releases, the migration should be fairly straightforward as it's now turned on by default (you can remove the strict: true option). Below are the list of changes:

  • All code rewritten in TypeScript
  • Removed all runtime dependencies (check out the difference in code size)
  • The mode-formerly-known-as-strict is removed, and its behavior is enabled by default. This means:
    • The env object will only contain the env vars that were specified by your validators.
    • Any attempt to access an invalid/missing property on the env object will cause a thrown error.
    • Any attempt to mutate the cleaned env object will cause a thrown error.
      You can still opt-out of strict mode by disabling the strictProxyMiddleware, but it's not
      recommended (see "Custom Middleware", in the README).
  • The dotenv package is no longer shipped as part of this library. You can easily use it directly
    by installing it and running require('dotenv').config() before you invoke envalid's cleanEnv()
  • The transformer validator option is gone, replaced by the ability to add custom middleware
  • The host and ip validators are now slightly less exhaustive. If you need these to be airtight, use
    your own custom validator instead
  • When you try to access an invalid property on the cleaned env object, the error will no longer
    suggest an env variable that you may have intended. You can re-implement the old behavior with a custom
    middleware if you wish
  • NODE_ENV support is now less opinionated, and an error is no longer thrown if a value other
    than production/development/test is passed in. You can provide your own validator for NODE_ENV
    to get exactly the behavior you want. The isDev, isProduction, etc properties still work as
    before, and are implemented as middleware so you can override their behavior as needed.