【发布时间】:2018-04-01 13:54:00
【问题描述】:
背景:
我的任务是将使用多种构建工具的 JS 库转换为仅使用 Webpack 的库,最终我们将重构代码以使用 es6 类。
目前该库已有 10 多年的历史,由多个可以交互/相互依赖的连接文件组成(意大利面条代码丰富!)。合并后,所有块成为一个 IIFE 文件,该文件添加了对窗口对象的特定调用。
就目前而言,我们让 Grunt 将所有文件连接在一起,然后我们通过 uglify 运行它。
我“排序”成功复制我们使用 Grunt 所做的唯一方法是使用脚本加载器。
脚本加载器的问题在于它会全局公开所有内容,并且由于我正在处理的库包含多个可以相互依赖的块,这还不够。
问题:
在 webpack 中有没有一种方法可以将多个文件(块)连接成一个?
例如:
-
chunkA.js
var varFromChunkA = "hello"; function methodFromA(){} -
chunkB.js
console.log(varFromChunkA); methodFromB(); -
entry.js
console.log(varFromChunkA + ' World'); methodFromA(); methodFromB();
最终我希望 entry.js 的输出能够访问来自 chunkA 和 B 等的变量/方法,而无需模块。 (整个库被分成基于代码的命名空间,根本没有模块)。
所以结合上面的块,我希望 webpack 输出如下内容:
var varFromChunkA = "hello";
function methodFromA(){}
console.log(varFromChunkA);
methodFromB();
/***Webpack Code***/
//Entry.js file
//I can access the objects / methods defined above
console.log(varFromChunkA +' World from inside entry.js');
/*** End of Webpack Code **/
在浏览器控制台中加载 js 时,我希望:
Hello
Hello World
Hello World from inside entry.js
这可能吗?
本质上,我希望 Webpack 的输出包含一些纯 JS,这些纯 JS 可由 weback 生成的任何 JS 文件访问...
尝试使用 script-loader 和 concat 插件,但没有成功。
我正在使用 Webpack 4
【问题讨论】:
标签: javascript webpack gruntjs uglifyjs