javascript - Webpack v4 在单个页面上有多个条目, block 被不必要地重复

标签 javascript webpack build node-modules webpack-4

我有一个多页网站,其中包含一个 SPA 页面子集。我们刚刚升级到 Webpack V4,遇到了一些我们以前没有见过的新问题。

我们的页面始终包含 的脚本标签app.build.js .该文件具有全局初始化,并导入我们的公共(public)路径。它导入诸如 Modernizr 之类的东西并构建我们的站点导航。

此外,在每页的基础上,我们提供第二个 JS 文件,如 。 account.build.js .如果页面非常简单,则某些页面没有第二个文件。他们仍然需要 app.build.js 来创建导航。

看起来 Webpack 似乎不知道这种组合,因此两个输出文件中存在冗余 block 。它们都可能包括 Modernizr 测试等,所有这些都被添加到两个构建文件中,使它们显着膨胀。

我的问题是,你如何告诉 Webpack app.build.js 是全局范围内的???我们为我们的 vendor 使用 SplitChunks 执行此操作,但它匹配导入,而不是条目文件名。

我们现在还需要 import './public-path';在每个条目文件中,这并不理想。我宁愿在 中执行一次app.build.js 并使其在全局范围内得到认可。

在此处使用 Webpack 提交的错误:https://github.com/webpack/webpack/issues/8842

最佳答案

如果您想将所有重复项移动到单个文件 (commons.js) 中,将所有内容放在一边vendors.js 中的 vendor 文件您可以指定多个缓存组。这个commons.js将包含跨所有入口点重复的所有模块。

optimization: {
  splitChunks: {
    cacheGroups: {
      vendors: {
        test: /[\\/]node_modules[\\/]/,
        name: 'vendors',
        chunks: 'all'
      },
      commons: {
        name: 'commons',
        chunks: 'all',
        minChunks: 2,
        enforce: true,
      },
    }
  }
}

关于javascript - Webpack v4 在单个页面上有多个条目, block 被不必要地重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54795391/

相关文章:

javascript - 带有项目符号导航的理想图像 slider 在 jquery 上失败

twig 文件中的 javascript 不执行

jquery - 让 jQuery-Mobile 与 webpack 一起工作

build - iOS 9 无法从 iTunesConnect 的审核中删除构建

java - 如何自动将所有相关类收集到一个jar中(使用maven)?

build - 如何构建gitk?

javascript - 异步 AJAX 调用在函数调用后完成。无需 JQUERY 即可解决

php - Javascript 和 PHP 中的正则表达式匹配问题

reactjs - 如何设置 babelrc 文件以及为什么?

node.js - typescript + Express : Type 'typeof e' has no compatible call signatures