-
Notifications
You must be signed in to change notification settings - Fork 47
Open
Description
At present when requiring this library from CJS code (e.g. in Node), require('tiny-invariant')
returns an object and you have to access the function from the .default
property.
const invariant = require('tiny-invariant').default;
I know the purpose of this module is primarily for client-side code as then it can be effectively minimised in production builds. However, I like it so much, I now use it everywhere including pure Node.js code!
Would you consider reconfiguring the CJS builds so require('tiny-invariant')
returns the actual invariant
function?
To avoid breaking changes, it'd be possible to also export invariant as property .default
of itself e.g.:
// Compiled CJS build
function invariant(condition, message) { /* ... */ }
invariant.default = invariant;
module.exports = invariant;
Or, to also issue a deprecation warning:
const warning = require('tiny-warning');
Object.defineProperty(invariant, 'default', {
get() {
warning(
false,
'Accessing `invariant` as `require('tiny-invariant').default` is deprecated.\n'
+ "Use `require('tiny-invariant')` (without `.default` instead)."
);
return invariant;
}
});
How do you feel about this?
I'd be happy to submit a PR.
Fallenstedt, thanpolas, robak86 and chentsulin
Metadata
Metadata
Assignees
Labels
No labels