Использование Browserify с плагинами jQuery

Краткая предыстория: я использую browserify и browserify-shim (и gulp для сборки) для создания веб-приложения. До этой проблемы я require загружал jquery из npm, поэтому у меня не было проблем. Как только я начал делать некоторую оптимизацию, я понял, насколько массивным был пакет с включенным jQuery. Итак, теперь я беру jQuery из CDN с тегом script и помещаю его перед файлом bundle.js. Но у меня возникают проблемы с объявлением jQuery глобальным и правильным отображением моих плагинов jQuery в браузерах и браузерах. Когда я запускаю gulp для сборки, я получаю ту же ошибку:

[gulp] gulp-notify: [Compile Error] module "jquery" not found from "/Volumes/Chetan/Users/cshenoy/Projects/urbanstems-node/app/plugins/jquery.inview.js"

Похоже, что browserify-shim не понимает, что jQuery является глобальным.

Для справки я использую плагин inview.

Вот мой package.json с соответствующими частями

"browser": {
  "inview": "./app/plugins/jquery.inview.js"
},
"browserify-shim": {
  "jquery": "global:jQuery",
  "inview": {
    "depends": [
      "jquery"
    ]
  }
}

Сообщите мне, что еще я могу включить в диагностику ошибки.


person Chetan Shenoy    schedule 11.07.2014    source источник
comment
Мне любопытно пойти в противоположном направлении. Когда вы require('jquery') из npm, как вы смогли открыть его глобально, чтобы плагины по-прежнему работали?   -  person Michael Martin-Smucker    schedule 14.08.2014
comment
Я не выставлял его глобально, когда устанавливал из npm. Значение для jquery внутри browserify-shim будет $ или jQuery. Тогда все ваши jQuery-зависимые плагины будут перечислены под ним со списком зависимых полей jquery.   -  person Chetan Shenoy    schedule 14.08.2014


Ответы (1)


Оказывается, вам не нужно объявлять каждый плагин jQuery в browserify-shim, если он зависит только от jQuery. Я просто удалил запись inview, и все работает нормально.

person Chetan Shenoy    schedule 15.07.2014