Как исправить имена переменных экспорта, созданные с помощью накопительного пакета? - PullRequest
0 голосов
/ 15 мая 2019

Я использую накопительный пакет для объединения всего кода JS, необходимого для нашего приложения. У нас есть некоторые сторонние зависимости, которые мы используем в нашем приложении, которые также служат входом для объединения. Проблема, с которой я сталкиваюсь, может быть упрощена до кода ниже.

мой-dependency.js

(function () {
    var myDependency = {};
    myDependency.doSomeThing = function () {
        console.log("Doing Something");
    };
    window['myDependency'] = myDependency;
})();

мой-code.js

window.myDependency.doSomeThing();

Поскольку у нас нет единой точки входа верхнего уровня для нашего приложения, я создал фиктивный файл верхнего уровня, который извлекает все необходимые файлы и служит в качестве входных данных для объединения. Я включил inlineDynamicImports, чтобы мы создали единый пакет для приложения.

rollupImporter.js

(async function () {
    await import("./my-dependency.js");
    await import("./my-code.js");
})();

Когда накопительный пакет создает пакет для этого кода, он создает переменную myDependency для хранения экспорта из my-dependency.js, который в итоге перезаписывает объект, созданный зависимостью третьей стороны, и я получаю сообщение о том, что myDependency.doSomething не функция.

Пакет, созданный в результате объединения, выглядит следующим образом:

(async function () {
    await Promise.resolve().then(function () { return myDependency; });
    await Promise.resolve().then(function () { return myCode; });
})();

(function () {
    var myDependency= {};
    myDependency.doSomeThing = function () {
        console.log("Doing Something");
    };
    window['myDependency'] = myDependency;
})();

var myDependency= /*#__PURE__*/Object.freeze({

});

window.myDependency.doSomeThing();

var myCode = /*#__PURE__*/Object.freeze({

});

Как я могу получить накопительный пакет, чтобы не создавать переменную для экспорта с тем же именем? У меня нет контроля над сторонней зависимостью, поэтому я не могу заставить их по-разному называть файл и их объекты.

P.S. Я столкнулся с этой проблемой с библиотекой dialog-poyfill, которую я использую, но решил упростить проблему для этого вопроса.

...