我正在尝试慢慢地将 Browserify 引入我的网站,但我不想重写所有 js,也不希望 jquery 和其他库的重复实例与我的 Browserify 版本捆绑在一起。
如果我构建将 jquery 列为外部依赖项的模块,那么如何将其指向我的全局 jquery 实例?另外,目标是消除 mylibs 全局(下面的示例),所以我不想在我的模块中使用它。
这就是我想要做的(伪代码)。这将位于我网站的存储库中,而不是模块的存储库中。该模块将与 Bower 一起安装:
var mylibs.jQuery = $.noConflict(); // global used by lots of existing code
module.exports = {
jquery: mylibs.jQuery // can be imported by my module as require('jquery')
};
我正在努力实现类似的目标。这可能吗?
您可以通过使用来实现browserify-shim https://github.com/thlorenz/browserify-shim。假设你有一个名为mymodule.js
这取决于全局范围内的 jQuery,内容如下:
var $ = require('jQuery');
console.log(typeof $);
-
安装 browserify-shim:
npm install browserify-shim --save-dev
-
在 package.json 文件中,告诉 browserify 使用 browserify-shim 作为转换:
{
"browserify": {
"transform": [ "browserify-shim" ]
}
}
-
在 package.json 文件中,告诉 browserify-shim 将 jQuery 映射到全局范围内的 jQuery:
{
"browserify-shim": {
"jQuery": "global:jQuery"
}
}
-
运行 browserify
browserify mymodule.js > bundle.js
如果你检查bundle.js你会注意到require('jQuery')
被替换为(window.jQuery)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)