Webpack:导入一个在全局命名空间中具有功能的文件并使它们可用?

时间:2017-01-20 14:10:46

标签: webpack ecmascript-6

我正在尝试使用webpack导入文件,我正常。

import" ../../ lib / SampleFunctions.js&#34 ;;

在此示例函数中,有许多函数直接在全局命名空间i..e

上创建
function CreateItem()
{

};

function CreaturePack(inside)
{

};

// constructor
CreaturePack.prototype = Object.create(CreateItem.prototype);

但问题是CreatePack或CreateItem在全局命名空间中不可用。

我知道我可以使用expose插件解决这个问题,也许我使用它错了..但我做了以下

      {test: /SampleFunctions\.js$/, loader: 'expose?CreaturePack'},

我现在有一个CreaturePack,但它是一个空对象,那么CreateItem呢?

有点疯狂,任何人都知道如何做到这一点。我希望能够使用import" ..... file"但我的对象是在全局范围内创建的。 SomeFunctions是一个示例,真实文件非常复杂,因此我无法重构它以使用ES6模块。

是否有其他更好的加载器将所有内容放在全局命名空间中?

我有一些其他文件使用它,并期望这些函数在全局命名空间。

2 个答案:

答案 0 :(得分:1)

您需要使用exports-loader

,而不是使用expose-loader

答案 1 :(得分:0)

@Martin:所以,如果我理解你的要求, 你想在你的项目中有一些全局对象[它可能包含Server_Name,Version等]并在你的模块中使用它。

如果是这样,您可以在顶部的Webpack.config.js中导入该公共模块,将其分配给某个本地对象并将其放在Webpack的 externals 对象中。

var CommonModule = require('./config');

module.exports = {
........
   externals: {
       'appConfig': JSON.stringify(CommonModule)
   }
........
}

然后,您可以直接在不同的模块中导入它。

import appConfig from 'appConfig';