invariant

A mirror of Facebook's `invariant` (e.g. React, flux).

A way to provide descriptive errors in development but generic errors in production.

# Install

With npm do:

npm install invariant

# <tt>invariant(condition, message)</tt>

var invariant = require('invariant');
invariant(someTruthyVal, 'This will not throw');
// No errors
invariant(someFalseyVal, 'This will throw an error with this message');
// Error: Invariant Violation: This will throw an error with this message

Note: When `process.env.NODE_ENV` is not `production`, the message is required. If omitted, `invariant` will throw regardless of the truthiness of the condition. When `process.env.NODE_ENV` is `production`, the message is optional – so they can be minified away.

## Browser

When used with browserify, it'll use `browser.js` (instead of `invariant.js`) and the envify transform will inline the value of `process.env.NODE_ENV`.

## Node

The node version is optimized around the performance implications of accessing `process.env`. The value of `process.env.NODE_ENV` is cached, and repeatedly used instead of reading `process.env`. See Server rendering is slower with npm react #812