Webpack 捆绑dll资产而不安装引用模块的想法
因此,我们正在使用React和Webpack开发一个站点生成器。该工具附带一个设计器,允许您添加第三方npm插件,并在React代码段中使用它们 最终用户可以更改各种站点模板,然后该工具使用webpack在我们的服务器上编译站点包,并将其部署到用户选择的云主机上。用户还可以在部署之前预览服务器上的站点更改 到目前为止,我们的策略是为每个站点生成package.json和webpack.config文件,然后运行webpack。这是可行的,但速度很慢。现在,我们的计划是使用Webpack 捆绑dll资产而不安装引用模块的想法,webpack,codesandbox,Webpack,Codesandbox,因此,我们正在使用React和Webpack开发一个站点生成器。该工具附带一个设计器,允许您添加第三方npm插件,并在React代码段中使用它们 最终用户可以更改各种站点模板,然后该工具使用webpack在我们的服务器上编译站点包,并将其部署到用户选择的云主机上。用户还可以在部署之前预览服务器上的站点更改 到目前为止,我们的策略是为每个站点生成package.json和webpack.config文件,然后运行webpack。这是可行的,但速度很慢。现在,我们的计划是使用DllPlugin和Dl
DllPlugin
和DllReferencePlugin
为那些我们添加到站点模板代码的baseline package.json中的包预创建dll脚本。根据我们的实验,这将大大缩短站点构建时间
然而,还有一种情况是这种策略失败了。。。最终用户可以将自己选择的npm包添加到自己的站点,并在站点代码中引用它们。我们目前必须对用户包执行两个步骤-
package.json
文件,查找main
(或其他入口点),然后检查它们是否在dll清单中。本质上,这意味着也必须首先安装预捆绑包
因此,我邀请网页大师提供一些指导。我们还研究了其他方法,比如客户端绑定,它非常聪明,但不适合我们基于服务器的构建过程
谢谢 这是一个非常有趣的问题,可以用很多不同的方法来解决,每种方法都有各自的优缺点 我们在CodeSandbox中使用的dll服务(webpack-dll-prod.herokuapp.com)也由WebpackBin使用,WebpackBin在服务器端使用它(带有dll插件)。您可以在此处找到源:。WebpackDLL方法的缺点是我们手动添加所有可能的条目,这会使捆绑包非常大,在某些罕见的情况下无法捆绑
我正在写一篇关于处理这个问题的不同方法的中篇文章,它还没有完成,但是你可以在这里看到草稿:。也许它能给我们提供一些启发。谢谢@Ives!您认为可以使用webpack dll服务生成的
externals
信息,通过插件让webpack知道条目吗?目前,沙盒在客户端使用这些信息。到目前为止,我还没有编写任何网页包插件来评论这种插件的可能性。我相信您可以在DllReferencePlugin中传递清单,如下所示:。我们专门为CodeSandbox添加了外部信息,因此DllReferencePlugin甚至不需要这些信息。是的,我们正在这样做,但是如果没有安装捆绑包,webpack无法找到入口点。安装捆绑包后,它与任何其他dll捆绑包一样工作。