代码之家  ›  专栏  ›  技术社区  ›  Daniil Iaitskov

在与源文件对应的文件夹中的Webpack中生成捆绑包

  •  0
  • Daniil Iaitskov  · 技术社区  · 7 年前

    我使用带有preact异步路由器的webpack,它允许将代码库拆分并加载到包中。 它运行良好,但捆绑包位于1个文件夹中,并且具有扁平结构。 我预计大量捆绑包会出现性能问题。

    await import("app/module/page")
    

    默认情况下,preact异步路由器从相应路径加载捆绑包。 也就是说,如果src/a/b/c.tsx,那么http get/a/b/bundle。11.js。 我使用publicPath:“/”解决方法,任何路径都将替换为空字符串,但这并不能解决拥有大捆绑文件夹的问题。

      output: {
        filename: "./bundle.js",
        publicPath: "/"
      },
    

    我尝试使用文件名键和路径键函数生成动态输出路径,但不起作用。函数只调用一次,因为有一个条目文件。子包文件不能用作入口点(对于页面重新加载,如果路径指向404,我使用重写规则加载index.html)。

    括号中没有包含原始文件路径的正确变量。

    所以,若有一种方法可以为每个文件计算filename函数,那个么可以删除publicPath。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Filip Dupanović    7 年前

    你可以参考 SplitChunksPlugin 其中包含有关如何配置的详细信息 optimization.splitChunks 管理块。

    明确地 splitChunks.name 允许您传入一个函数来更改区块名称,这应该允许您将其移动到资源中的子路径上。

    旁注:虽然可以将输出目录配置为在源目录内,但从技术上讲,您应该始终能够在外部配置输出路径(因为 publicPath 和 outputPath (它们是独立的)。你可以用 copy-webpack-plugin 将静态源移动到输出中。

    这有一些好处,特别是可以更容易地配置VCS忽略模式,并且能够使用 clean-webpack-plugin 以确保您不会访问过时/保留孤立资产。