tutorial run exports javascript module webpack umd

javascript - run - Webpack umd library return Object.default



webpack ts loader (1)

Estoy escribiendo una lib con un paquete web con estas configuraciones:

output: { path: path.join(''build''), filename: ''my_lib.js'', library: ''MyLib'', libraryTarget: ''umd'' },

MyLib:

export default function() { console.log(''MyLib''); }

El problema es que cuando intento cargar build / my_lib.js en un navegador, la única manera de acceder a MyLib es a través de MyLib.default ...

¿Alguna idea?


Si está preguntando sobre alguna idea de por qué?

Si está utilizando Babel para habilitar las funciones de ES6, probablemente se encuentre frente a uno de los cambios entre Babel5 y Babel6.

Con Babel5 su código se transmite a esto:

''use strict''; Object.defineProperty(exports, ''__esModule'', { value: true }); exports[''default''] = function () { console.log(''MyLib''); }; module.exports = exports[''default''];

Pero con Babel6 obtienes:

''use strict''; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function () { console.log(''MyLib''); };

¿Ves la diferencia?

module.exports = exports[''default''];

Esta línea fue asesinada en Babel6. Aquí se decidió:

Para exportar siempre un valor predeterminado a exports.default

Si está preguntando sobre alguna idea para solucionarlo?

Puede agregar esta línea usted mismo o usar algún tipo de complemento babel que lo agregue .

const myLib = function () { console.log(''MyLib''); }; export default myLib; module.exports = myLib;