使用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" ] } 

我会做如下:

  1. 使用debowerify包括可用的凉亭,在你的情况下,将jQuery的路点,jQuery的validation

  2. 使用npm包中的jquery,可以在这里https://github.com/jquery/jquery

因此,我也会暂时移除browserify-shim。

browser指令只是一个别名来指定你想要什么时,你写jqueryjquery默认值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:$" ] },...