如何在全球范围内运行大量脚本?

时间:2015-12-09 22:40:44

标签: webpack

认为我的大多数第三方图书馆都在不使用script-loader的情况下工作,但遗留脚本都不起作用。他们都写得像,

var i_am_totally_global = 6;

function i_expect_to_just_run_in_the_browser() {}

所以我能想到的唯一选择就是在全局/窗口上下文中运行它们。但是,如果我尝试创建一个"条目"脚本有这样的东西,

require('script!./AjaxList');
require('script!./MozCompatibility');
require('script!./DynamicSelect');
require('script!./DynamicSelect2');
require('script!./prototype');
...

然后ProvidePlugin无法继续使用它们,这意味着他们无法访问我的供应商库,除非我script!那些,但我会回到原点one - 全球一切,webpack对我没有任何帮助。

是否有办法export在全局范围内声明的所有内容,而没有明确列出每个单独的函数+ var?

我找到了另一个装载机legacy-loader,我认为它可以做我想要的。但是,它只能显式地(window.abc = xyz)或隐式(abc = xyz)导出已添加到窗口对象的全局变量。但是,如果您的旧脚本确实var abc = xyzfunction abc() {}它无法正常工作,因为如果将其包装在函数中,那么这些将成为本地变量,而这些变量几乎无法在JavaScript中访问。

实现它的唯一真正方法AFAIK实际上是解析 JavaScript。但是,Webpack已经在解析JS了,所以你希望它可以收集这些顶级的本地变量,但是它似乎不是一个选项。

1 个答案:

答案 0 :(得分:0)

也许类似Expose Loader?的内容可以让你这样做?