A mirror of Facebook’s invariant (e.g. React,
flux).
A way to provide descriptive errors in development but generic errors in production.
With npm do:
npm install invariantinvariant(condition, message)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 messageNote: 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.
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.
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