JSPM

browserify-optional

1.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 310720
  • Score
    100M100P100Q172153F
  • License MIT

A browserify transform that allows optional dependencies in try..catch blocks

Package Exports

  • browserify-optional

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (browserify-optional) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

browserify-optional

It is a common pattern in Node to support optional dependencies via requires in try..catch blocks. Browserify doesn't support this by default and throws a compile time error when it cannot find a module. You can solve the problem by using browserify's exclude option, but this works globally instead of at a per-module level. This transform fixes the problem by moving the compile time error to a runtime error for requires of missing modules inside try..catch blocks.

Example

The transform would transform the following code such that requiring missing-module would throw a runtime error instead of a compile time error, making the code work as expected.

try {
  var x = require('missing-module');
} catch (e) {
  var x = require('replacement-module');
}

To set it up in browserify, add this to your package.json:

"browserify": {
  "transform": ["browserify-optional"]
}

License

MIT