Пишу, значит, на TypeScript NPM-пакет и использую es6-модули:
Код:
|
export default function sqr(a: number): number {
return a * a;
} |
ES-6 модулей нигде в живую нет, так что TypeScript, как и Babel гоняет экспорт через объект, где для дефолтного экспорта используется поле default:
function sqr(a) {
return a * a;
}
exports["default"] = sqr;
Задно я хочу чтобы эту библиотеку можно было по старинке подключить в браузере. Собираю через webpack, с указанием глобальной переменной.
Конфиг вебпака:
module.exports = {
context: __dirname,
entry: "./index.js",
output: {
path: __dirname,
filename: "browser-version.js",
library: "mySqr"
}
};
Собирается это в следующий код:
var mySqr =
(function(modules) { // webpackBootstrap
// ...
([
function(module, exports) {
function sqr(a) {
return a * a;
}
exports["default"] = sqr;
/***/ }
/******/ ]);
То есть в браузере у нас теперь доступна переменная mySqr. Вот только из-за манипуляций с es6-модулями в этой переменной не сама исходная функция, а объект {default: sqr}.
Можно ли как-то указать webpack'у, чтобы он обрабатывал такие ситуации. Либо более общий случай - указать поле которое следует импортировать из модуля, вместо модуля целиком.
В зарубежных интернетах нашёл десяток похожих тем, но нигде нет решения. Может быть они чего-то не знают?