Использование браузера с плагинами npm jQuery и non-npm
Я использую браузеру для комплектации интерфейсного кода. Это было здорово до сих пор, но у меня возникли трудности с смешиванием пакетов npm и non npm. Например, используя версию jQuery npm с версиями jQuery без CJS.
Мое текущее решение - использовать ключ browser
в package.json, чтобы указать на jQuery dist, а затем использовать browserify-shim
, чтобы добавить его как зависимость плагинов.
Есть ли более чистый способ сделать это, чем то, что у меня есть сейчас?
Изменить: В настоящее время я пытаюсь использовать npm и package.json для управления всеми моими зависимостями, поэтому я не хочу использовать беседу в этом проекте. Назовите меня сумасшедшим:)
Package.json
"dependencies": {
"jquery": "~2.1.0",
"browserify": "latest",
"browserify-shim": "^3.5.0",
"jquery-waypoints": "[email protected]: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, чтобы включить библиотеки, доступные в bower, в вашем случае будут jquery-waypoints, jquery-validation
-
Используйте jquery, который входит в пакет npm, который доступен здесь https://github.com/jquery/jquery
Как таковой, я бы также удалил Browsify-shim на время.
Ответ 2
Директива browser
- это просто псевдоним, указывающий, что вы хотите, когда пишете jquery
. По умолчанию для jquery
указан путь в node_modules
, поэтому ваша строка:
"jquery": "./node_modules/jquery/dist/jquery.js",
... избыточно, и вы можете удалить его, потому что, когда вы пишете "depends": ["jquery"]
в вашей конфигурации Browserify Shim, jquery
уже указывает на ./node_modules/jquery/dist/jquery.js
без этой строки в вашей клавише browser
. Фактически, вы, вероятно, могли бы полностью удалить директиву browser
, вам нужно будет проверить конфигурацию в этих файлах package.json
плагинов jQuery, но, скорее всего, они уже сглажены, как и у вас, без переопределения browser
.
В противном случае я не думаю, что есть более чистый способ реализовать это. Как вы сказали, вам нужно использовать Browserify Shim, чтобы закрепить эти плагины, не связанные с CJS jQuery, и вы делаете это правильно.
Ответ 3
Вам не хватает правильного определения зависимостей (например, установите "$" в объявление jquery):
"plugin": {
"exports": "plugin",
"depends": [
"jquery:$"
]
},...