我正在尝试构建一个使用backbone / jquery的独立JS库。这里有sample repo代表我正在尝试构建的库。
我对这个lib有几个目标:
所以,我的理解是我可以使用browserify-shim来正确地填充这些模块,以便在browserify中使用require
按预期使用它们。我非常确定当它包装这些模块时,垫片应该是undef defines
和require
,这将达到目标#2。希望目标#1只需按预期使用browserify即可实现。
我似乎无法将其付诸实践,而且我不确定它是否只是我对browserify-shim的误解。无论我是否从命令行运行browserify,我似乎都有同样的问题:browserify src/main.js -o build/main.js
或使用gulp build。
基本上,它似乎browserify-shim
甚至没有运行。如果你打开index.html,你可以看到我加载的requirejs代码肯定影响我的lib,因为Backbone
只是一个空对象,然后requirejs崩溃
你可以在回购中看到我的package.json here,看起来大致如下:
{
...
"browserify-shim": {
"./node_modules/jquery/dist/jquery.js": "$",
"./node_modules/underscore.js": "_",
"./node_modules/backbone.js": {
"exports": "Backbone",
"depends": [
"./node_modules/underscore.js",
"./node_modules/jquery/dist/jquery.js"
]
}
},
"devDependencies": {
"browserify": "^4.1.11",
"browserify-shim": "^3.6.0",
"gulp": "^3.8.1",
"vinyl-source-stream": "^0.1.1"
},
"dependencies": {
"backbone": "^1.1.2",
"jquery": "^1.11.0",
"underscore": "^1.6.0"
}
}
不确定我在这里失踪了什么,但我没有运气。我想知道是否有人可以帮助或至少证实我尝试实现的目标是正确的,并且browserify-shim
是可能的。
感谢。
为了说明它绝对不会模块化,我已经创建了完全相同的build/main.js
和build/main-shimmed.js
。我运行的main.js没有shim配置,并且shimmed的配置有上面的配置。我在这里明显遗漏了一些东西。
答案 0 :(得分:0)
Browserify和Browserify-shim正在这种情况下工作,你的main.js正在调用正确的要求。
您遇到的问题是您正在捆绑的库也尝试连接AMD样式配置。你的“穿越溪流”,要小心Gozer。
要么获得没有AMD配置加载器的版本,要么将它们注释掉。