场景:我有一个应用程序,我使用webpack构建myApp.js,我需要使用externalLibrary.js,这是一个使用webpack构建的库。
我可以将它们并排包含在内吗? (我假设webpack引导程序有效地加载了两次 - 这是一个问题吗?)
<script src="externalLibrary.js"></script>
<script src="myApp.js"></script>
如果我在myApp中执行类似var externalLib = new ExternalLibrary()
的操作,myApp和externalLibrary都使用jQuery或其他第三方库;我的捆绑包是否包括externalLibrary(考虑到它的webpack配置?)并且树摇动和一切? jQuery代码是重复还是只包含externalLibrary和myApp所需的代码?
如何在我的应用程序中使用webpack,该应用程序使用也使用webpack构建的外部库?我的代码和库代码是否共享一个依赖项,该依赖项是一次还是两次加载?
答案 0 :(得分:0)
我想详细回答您的问题,需要更多信息:
您是否在同一个webpack项目/实例中构建外部库,或者它是一个与其自己的webpack配置不同的项目?
您package.json
中引用的外部库是否依赖?或者直接嵌入到项目中(例如在自己的文件夹中)?
这里有一些可能对您有帮助的要点:
如果您多次执行var externalLib = new ExternalLibrary()
,它将创建该ExternalLibrary的多个实例。这不是Webpack的责任,而是您的代码。如果要仅将其实例化一次,则创建一次并在任何地方引用它。
Webpack的作用是,当您执行myApp.js
时,它确保该库的构造函数只包含在const ExternalLib = require('external-lib')
中一次。
默认情况下,Webpack只会注释死代码,但不会将其删除(树摇动),除非您使用UglifyJSPlugin
,as shown in the docs这样的插件。
如果您多次包含同一个文件(即使其他软件包,例如require('jquery')
首先包含在他们的&#34; main&#34;文件中),它只会被webpack解析一次,然后无论在何处使用,都可以在代码中引用。