isomorphic-ensure

Use webpack loaders seamlessly – in node as well as in the browser.

Usage no npm install needed!

<script type="module">
  import isomorphicEnsure from 'https://cdn.skypack.dev/isomorphic-ensure';
</script>

README

Coveralls – test coverage Travis – build status David – status of dependencies Stability: stable Code style: airbnb

isomorphic-ensure

Use webpack loaders seamlessly – in node as well as in the browser.

And that almost for free. Around 160 bytes is all you’ll add to the browser bundle – including boilerplate code. Measured minzipped when raw-loader and json-loader are used.

Installation

$ npm install isomorphic-ensure

Usage

1) Wire things up.

if (typeof require.ensure !== 'function') require.ensure =
  require('isomorphic-ensure')({

    // If you want to use loaders, pass them through options:
    loaders: {
      raw: require('raw-loader'),
      json: require('json-loader'),
    },

    // If you require local files, pass the current location:
    dirname: __dirname,
  })
;

2) Profit!

// …later in the same file:

require.ensure(
  ['./other-module', 'raw!./data.xml', 'tape', 'json!tape/package.json'],
  (require) => {
    // Local scripts:
    const otherModule = require('./other-module');
  
    // Local files via a loader:
    const data = require('raw!./data.xml');
  
    // Node modules:
    const tape = require('tape');
  
    // Node module files via a loader:
    const tapeManifest = require('json!tape/package.json');
  
    // Wow! It just works!
  }
);

3) If you’re using webpack, update your config.

// …
  resolve: {alias: {
    'isomorphic-ensure': 'isomorphic-ensure/mock',
    'raw-loader': 'isomorphic-ensure/mock',
    'json-loader': 'isomorphic-ensure/mock',
  }},
// …

License

MIT © Tomek Wiszniewski