Разрешить глобальные преобразования с помощью grunt browserify
Я добавил jQuery в качестве тега сценария в свой HTML-файл и добавил его в package.json
для работы с browserify-shim
следующее:
"browserify": {
"transform": [
"browserify-shim"
]
},
"browserify-shim": {
"jquery": "global:jQuery"
},
Я могу представить его в моем основном файле сценария с помощью простого require('jquery')
вызов.
Проблема в том, что я использую некоторые плагины jQuery, которые внутренне делают require('jquery')
и поскольку преобразования browserify не применяются к зависимостям зависимостей, это приводит к тому, что browserify жалуется на связывание, так как не может найти jQuery
,
Теперь я знаю, что могу решить эту проблему путем применения глобальных преобразований, поскольку я не могу найти способ сделать это легко.
Документы Browserify говорят, что вы не можете применять глобальные преобразования в файле пакета, поэтому следующее не работает (что я думал, будет):
"browserify": {
"global-transform": [
"browserify-shim"
]
},
"browserify": {
"transform": [
"browserify-shim"
],
"global": true
},
Я также попытался добавить опцию к моему Gruntfile.js
следующим образом, но даже это не работает:
browserify: {
options: {
global: true
},
dist: {
files: {
'js/bundle.js': 'js/script.js'
}
},
},
Последний вариант - добавить вручную browserify-shim
для каждой зависимости package.json
, но я не хочу этого делать, поскольку это означает, что каждый раз, когда я добавляю новый плагин, мне придется повторять один и тот же процесс.
Любые идеи, чтобы смягчить вышеуказанную проблему?
1 ответ
Вы должны иметь возможность применять global-transforms, предоставляя transform с опцией хэширования:
"browserify": {
"transform": [
["browserify-shim", {global: true}]
]
}