javascript - 什么会导致 webpack 递归地包含每个文件?

标签 javascript webpack

我有一个基于 AMD 的项目。当我使用 webpack 构建它时,webpack 开始加载模块,并最终由于某种原因通过通配符/glob 递归加载。我正在努力阻止这种情况发生。

例如 webpack 的输出

   [0] ./fixme.js 1.9 kB {0} [built]
   [1] ./host/CaptureContext.js 21.1 kB {1} [built] [1 error]
   [2] ./shared/Settings.js 1.2 kB {1} [built]
   [3] ./shared/Extensions.js 1.87 kB {1} [built]
   [4] ./shared/EventSource.js 1.61 kB {1} [built]
   [5] ./shared/Hacks.js 215 bytes {1} [built]
   [6] ./shared/Info.js 122 kB {1} [built]
   [7] ./shared/Utilities.js 8.47 kB {1} [built]
   [8] ./shared/Base.js 2.38 kB {1} [built]
   [9] ./host/Frame.js 16.1 kB {1} [built]
  [10] ./host/StateSnapshot.js 13.1 kB {1} [built]
  [11] ./host/Notifier.js 1.34 kB {1} [built]
  [12] ./host/ResourceCache.js 7.36 kB {1} [built] [1 error]
  [13] ./host/resources/Program.js 10.3 kB {1} [built]
  [14] ./host/Resource.js 5.43 kB {1} [built]
  [15] ./host/ResourceVersion.js 1.75 kB {1} [built]
  [16] ./host/resources/Buffer.js 11.7 kB {1} [built]
  [17] ./host/resources/Framebuffer.js 4.53 kB {1} [built]
  [18] ./host/resources/Renderbuffer.js 2.88 kB {1} [built]
  [19] ./host/resources/Shader.js 2.97 kB {1} [built]
  [20] ./host/resources/Texture.js 29.5 kB {1} [built]
  [21] ./shared/GLConsts.js 31.7 kB {1} [built]
  [22] ./host/resources/VertexArrayObject.js 9.38 kB {1} [built]
  [23] ./host/resources/VertexArrayObjectOES.js 2.12 kB {1} [built]
  [24] ./host/Statistics.js 4.16 kB {1} [built]
  [25] ./host/HostUI.js 10.1 kB {1} [built]
  [26] ./CSSLoader.js 2.33 kB {1} [built]
  [27] . ^\.\/.*$ 128 kB {1} [built] [761 warnings]
  [28] ./buildextensions.sh 0 bytes [optional] [built] [failed]
  [29] ./dependencies/require.js 86.6 kB {1} [optional] [built]
  [30] ./dependencies/reset-context.css 0 bytes [optional] [built] [failed]
  [31] ./dependencies/stacktrace.js 14.8 kB {1} [optional] [built]
  [32] ./dependencies/syntaxhighlighter_3.0.83/LGPL-LICENSE 0 bytes [optional] [built] [failed]
  [33] ./dependencies/syntaxhighlighter_3.0.83/MIT-LICENSE 0 bytes [optional] [built] [failed]
  [34] ./dependencies/syntaxhighlighter_3.0.83/shBrushGLSL.js 2.91 kB {1} [optional] [built] 

第 27 行

  [27] . ^\.\/.*$ 128 kB {1} [built] [761 warnings]

是什么原因造成的?我没有任何通过通配符/全局加载模块的引用。该程序在没有 webpack 的情况下运行良好,仅使用 require.js 和普通 AMD。

./fixme.js 看起来像这样

require([
     './host/CaptureContext',
     './host/HostUI',
     './CSSLoader',
  ], function(
      captureContext,
      HostUI,
      cssLoader) {
});

如果我注释掉第二两行,如

require([
     './host/CaptureContext',
//     './host/HostUI',
//     './CSSLoader',
  ], function(
      captureContext,
      HostUI,
      cssLoader) {
});

那么 webpack 仅包含大约 24 个模块,并且不会疯狂地尝试递归包含整个树。

当然,我会开始从模块中删除一些内容,以尝试缩小问题范围,但我的第一次尝试没有任何运气,所以我正在寻找导致此问题的原因

最佳答案

问题显然是其中一个文件中有此内容。

var url = require.toUrl(filename);

Webpack 看到该行并显然假设所有文件都是需要的。注释掉该行修复就是问题所在。

关于javascript - 什么会导致 webpack 递归地包含每个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41489793/

相关文章:

c# - Global.asax 上的 ASP.NET gzip 脚本和 CSS

javascript - 页脚中的 DataTables.net 表列总和

javascript - CSS3 Div 并排排列

javascript - haml 的 webpack 配置

node.js - 如何在 package.json 的 webpack 中添加 NODE_PATH?

javascript - webpack 构建中出现意外标记 "export"

node.js - 如何使用webpack手动测试react组件?

javascript - 我正在尝试使用 JavaScript 中的选择排序算法对数组中的对象进行排序

javascript - 字符串内换行(React Native)

ruby-on-rails - 基本的 React 元素在带有 webpack 的 Rails 5.1 中不显示