使用npm jQuery和非npm插件的browserify
我正在使用browserify捆绑前端代码。 到目前为止,这是非常棒的,但是我一直在混合npm和非npm包装方面遇到困难。 例如,使用nQuery版本的jQuery与非CJS版本的jQuery插件。
我目前的解决scheme是使用package.json中的browser
键指向jQuery的dist,然后使用browserify-shim
将其添加为插件的依赖项。
有没有比我目前有更干净的方式来做到这一点?
编辑:我目前正在尝试使用npm和package.json来pipe理我所有的依赖项,所以我不想在这个项目上使用bower。 叫我疯了:)
的package.json
"dependencies": { "jquery": "~2.1.0", "browserify": "latest", "browserify-shim": "^3.5.0", "jquery-waypoints": "git@github.com:imakewebthings/jquery-waypoints.git", "jquery-validation": "git://github.com/jzaefferer/jquery-validation" }, "browser": { "jquery": "./node_modules/jquery/dist/jquery.js", "jquery-waypoints": "./node_modules/jquery-waypoints/waypoints.js", "jquery-validate": "./node_modules/jquery-validation/build/release.js" }, "browserify-shim": { "jquery": "$", "jquery-waypoints": { "depends": [ "jquery" ] }, "jquery-validate": { "depends": [ "jquery" ] } }, "browserify": { "transform": [ "browserify-shim" ] }
我会做如下:
-
使用debowerify包括可用的凉亭,在你的情况下,将jQuery的路点,jQuery的validation
-
使用npm包中的jquery,可以在这里https://github.com/jquery/jquery
因此,我也会暂时移除browserify-shim。
browser
指令只是一个别名来指定你想要什么时,你写jquery
。 jquery
的默认值是node_modules
的path,所以你的行:
"jquery": "./node_modules/jquery/dist/jquery.js",
…是多余的,你可以删除它,因为当你在你的Browserify Shimconfiguration中写下"depends": ["jquery"]
时, jquery
已经指向./node_modules/jquery/dist/jquery.js
browser
密钥。 事实上,你可能完全删除browser
指令,你必须检查这些jQuery插件的package.json
文件中的configuration,但很可能它们已经被别名了,没有browser
覆盖。
否则,我不认为有一个更清晰的方式来实现这一点。 就像你说的那样,你需要使用Browserify Shim来填充那些非CJS jQuery插件,而你正在做的是正确的。
你错过了正确的定义依赖关系(例如,将“$”设置为你的jquery声明):
"plugin": { "exports": "plugin", "depends": [ "jquery:$" ] },...