我认为我已经得到了大部分第三方库的工作,但没有使用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!
这些呢,他们无法访问我的供应商库,但那么我就回到原点 - 全球和webpack都不会为我做任何事情。
是不是有办法在export的全局范围内声明的所有东西,没有明确列出每一个函数+ var?
我发现了另一个装载机,legacy-loader,而且我认为他会做什么,我想要的。但是,它只能导出已添加到窗口对象的全局变量,明确地(window.abc = xyz
)或隐式(abc = xyz
)。但是,如果您的旧脚本不是var abc = xyz
或function abc() {}
,那么它将不起作用,因为如果您将其包装在函数中,那么这些变量将成为几乎不可能在JavaScript中访问的本地变量。
唯一真正做到这一点的方法AFAIK实际上是解析的JavaScript。然而,Webpack已经解析了JS,所以你希望它可以收集这些顶级局部变量,但似乎并没有这样的选择。
除非Expose有一个我没有意识到的秘密“揭露所有事物”选项。 – mpen