2015-10-15 2 views
7

Как скомпилировать мой код с помощью webpack и babel, чтобы экспортированная функция была доступна в глобальной области.Как экспортировать экспортированную функцию в глобальную область с помощью babel и webpack

Так, например:

export function test(){console.log('test')} 

должны быть доступны под window.test().

Когда я просто запустить babel -d я получил то, что ожидал:

'use strict'; 

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

function test() { 
    console.log('test'); 
} 

но выход WebPack выглядит следующим образом:

!function(e) { 
    function t(r) { 
    if (o[r])return o[r].exports; 
    var n = o[r] = {exports: {}, id: r, loaded: !1}; 
    return e[r].call(n.exports, n, n.exports, t), n.loaded = !0, n.exports 
    } 

    var o = {}; 
    return t.m = e, t.c = o, t.p = "", t(0) 
}([function(e, t) { 
    "use strict"; 
    function o() { 
    console.log("test") 
    } 

    Object.defineProperty(t, "__esModule", {value: !0}), t.test = o 
}]); 

конец функция test не доступна в глобальном масштабе.

+0

Есть ли у вас обновления? Я пытался научиться делать то же самое какое-то время. –

+0

Я пытаюсь сделать то же самое, только динамически создаю окна/глобалы. Expose-loader работает, но ломается, когда вам нужно выставить TON globals – user1828780

ответ

0

Отъезд: https://webpack.github.io/docs/library-and-externals.html#examples

Устанавливая библиотеки вывода собственность любого имени вы хотите, чтобы обернуть ваши Глобал позволят вам затем вызвать: YourLibrary .test();

module.exports = { 
    entry: ['./_js/script.js'], 
    output: { 
     library: 'YourLibrary', 
     path: __dirname, 
     filename: './build/script.js' 
    } 
+4

, но как просто экспортировать одну функцию –

+0

в приведенном выше примере, вы имеете в виду просто вызов 'YourLibrary()' как функцию, я не уверен, что это возможно. Однако вы можете только выставить/экспортировать одну функцию, например, экспортировать функцию 'foo() {...', затем вызвать 'YourLibrary.foo()' – glued

+1

да, но мне нужны функции вызова в другом модуле, экспортированном в 'YourLibrary. Foo() ' –

Смежные вопросы