Глобальное требование с Browserify v2

Я хочу использовать Browserify для связывания моих файлов, но тогда мне нужно будет потребовать один из модулей внутри моего браузера в комплекте bundle.js на самой HTML-странице. В настоящее время это невозможно, потому что на странице нет функции require.

Похоже, что функция require, определенная в браузере в bundle.js, находится внутри IIFE, поэтому я не могу ее использовать. Можно ли выбросить это вместо глобального require?

<script src="bundle.js"></script>
<script>
  // Require the `app` module inside of `bundle.js`
  var app = require('app');
  app.start();
</script>

Мне нужно сделать это, потому что моя функция app.start требует передачи некоторого JSON, который может отображаться только на серверном шаблоне.

N.B. Я использую Browserify v2.

Ответ 1

Вы можете использовать -r для выставить глобальную функцию require() для указанных файлов:

x.js:

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

Консоль

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

то в вашем html:

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

напечатает 333.

В вашем случае просто browserify -r app вывести require('app') во внешний контекст.