browserify-shim
一种可以自动转换非commonjs包的方式, 通过 browserify-shim.
browserify-shim 是作为一个转换器(transform)加载的. 他可以读取 package.json 中的 browserify-shim字段.
假设我们需要转换放在 ./vendor/foo.js 的第三方库, 这个库通过window全部变量 FOO 暴露它的功能. 我们可以这样设置我们的 package.json:
{ "browserify": { "transform": "browserify-shim" }, "browserify-shim": { "./vendor/foo.js": "FOO" }}
当我们 require('./vendor/foo.js'), 我们可以得到 ./vendor/foo.js 试图在全局作用域设置的 FOO 变量. 但是那个视图被隔离到了一个单独的上下文中, 以防止全局变量污染.
我们甚至可以使用
browser字段
来使 require('foo') 正常工作, 而不必 每次都是使用一个相对路径 ./vendor/foo.js 去加载.
{ "browser": { "foo": "./vendor/foo.js" }, "browserify": { "transform": "browserify-shim" }, "browserify-shim": { "foo": "FOO" }}
现在 require('foo') 将会返回 ./vendor/foo.js 试图设置在全局作用域的 FOO 变量.