Как я могу загрузить "jquery-1.4.2" как модуль в веб-пакете без изменения его источника
Я хочу включить jquery-1.4.2
параллельно с jquery-3.x
, Я назвал пути обоих сценариев как: jquery1
/jquery3
Для jquery-3.x код ниже работает:
require("imports-loader?jQuery=jquery3!app/some.jquery.myplugin");
Но если я сделаю то же самое для jquery1:
require("imports-loader?jQuery=jquery1!app/some.jquery.mylegacyplugin");
Я получаю во время выполнения: не могу установить свойство mylegacyplugin из неопределенного.
Единственное решение, которое я нашел до сих пор, это отредактировать jquery-1.4.2. файл и добавьте следующее в конце функции:
module.exports=jQuery;
Есть ли загрузчик, который я могу использовать, чтобы избежать редактирования исходного кода jquery?
1 ответ
Я создал репо, который демонстрирует это
Установка: npm i exports-loader -D
, Я вижу, что вы установили imports-loader
уже.
И я надеюсь, что вы можете изменить свой плагин, чтобы добавить module.exports
,
myJQueryPlugin.js
$.fn.greenify = function () {
debugger;
this.css("color", "green");
return this;
}
module.exports = $;
Добавьте следующее правило:
module: {
rules: [
{
use: "exports-loader?window['jQuery']",
test: /jQuery.1.4.2.js$/
},
Я добавил также resol.alias для моего плагина jQuery:
resolve: {
alias: { // shortcuts
"myjqPlugin": path.resolve("src/scripts/plugins/app/myJQueryPlugin.js")),
Тогда в вашем index.js
// you would probably name this `var` differently:
var my142jQueryIncludingPlugin = require("imports-loader?$=../../libs/jQuery.1.4.2.js!myjqPlugin");
my142jQueryIncludingPlugin("*").greenify();
Результат: все зеленое:-)