Всем привет! На волне восхождения EcmaScript 2015 и пика популярности 6to5 хотелось бы добавить в свою библиотеку кросс-стандартный экспорт.
AMD
(function (root, factory) {
if (typeof define == 'function' && define.amd) {
define(factory);
} else {
root.lib = factory();
}
}(this, function (){
return {}
});
CommonJS
if( typeof module != 'undefined' && module ) {
module.exports = lib;
}
ES 2015
export default lib;
Как экспортировать модуль не прибегая к синтаксису ES 2015? Глобальное пространство имен
System, исходя из того, что я нашел в интернете, не содержит функции
export, только
import.
Я могу прибенгуть к эвалу
try {
Function( 'lib', 'export default lib;' )( lib );
} catch( e ) {}
Но такой подход не позволит работать сборщикам проекта.
Пока могу догадаться, как обхединить первые два подхода:
(function (root, factory) {
if (typeof define == 'function' && define.amd) {
define(factory);
} else {
if( typeof module != 'undefined' && root === module ) {
root.exports = factory();
} else {
root.lib = factory();
}
}
}(this, function (){
return {}
});
Как объединить все три подхода, не прибегая к хакам, ломающим транспилеры и минификаторы?