Global require with Browserify v2

browserify, javascript, module

Solution

You can use `-r` to expose a global `require()` function for the files you specify:

x.js:

module.exports = function (n) { return n * 111 }

Console

$ browserify -r ./x.js > bundle.js

then in your html:

<script src="bundle.js"></script>
<script>
    var x = require('./x.js');
    console.log(x(3))
</script>

will print `333`.

In your case, just do `browserify -r app` to expose `require('app')` to the external context.

Problem

I want to use Browserify to bundle my files, but I then need to require one of the modules inside of my Browserify bundled `bundle.js` on the HTML page itself. This is currently not possible because there is no `require` function defined on the page. It appears that the `require` function defined by browserify in `bundle.js` is inside of an IIFE, so I can't use that. Is it possible to throw this one out in place of a global `require`? ``` <script src="bundle.js"></script> <script> // Require the `app` module inside of `bundle.js` var app = require('app'); app.start(); </script> ``` I need to do this because my `app.start` function requires some JSON is passed to it which can only be rendered by the server-side template. N.B. I am using Browserify v2.

Original source