2016-01-12 4 views
1

Я пишу LIB с WebPack с этими настройками:Webpack UMD библиотека возвращение Object.default

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

MyLib:

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

Проблема заключается в том, когда я пытаюсь загрузить сборки/my_lib.js в браузере, единственный способ доступа к MyLib - через MyLib.default ...

Любая идея?

ответ

3

Если вы задаетесь вопросом о том, почему?

Если вы используете Babel для включения функций ES6, то вы, вероятно, сталкиваетесь с одним из изменений между Babel5 и Babel6.

С Babel5 ваш код transpiled это:

'use strict'; 

Object.defineProperty(exports, '__esModule', { 
    value: true 
}); 

exports['default'] = function() { 
    console.log('MyLib'); 
}; 

module.exports = exports['default']; 

Но с Babel6 вы получите:

'use strict'; 

Object.defineProperty(exports, "__esModule", { 
    value: true 
}); 

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

ли вы заметить разницу?

module.exports = exports['default']; 

Эта строка была killed в Babel6. Здесь было принято решение:

Чтобы всегда экспортировать по умолчанию в exports.default

Если вы спрашиваете о какой-либо идеи, чтобы обойти это?

Вы можете добавить эту линию самостоятельно или использовать своего рода babel plugin that adds it for you.

const myLib = function() { 
    console.log('MyLib'); 
}; 

export default myLib; 

module.exports = myLib; 
+0

Да, любая идея обходного пути. Спасибо :) – gtournie

+0

Просьба проголосовать за запрос функции здесь: https://github.com/webpack/webpack/issues/3929;) – Luckylooke