使用webpack和使用webpack的库

时间:2017-07-07 20:50:43

标签: webpack webpack-2

场景:我有一个应用程序,我使用webpack构建myApp.js,我需要使用externalLibrary.js,这是一个使用webpack构建的库。

  1. 我可以将它们并排包含在内吗? (我假设webpack引导程序有效地加载了两次 - 这是一个问题吗?)

    <script src="externalLibrary.js"></script>
    <script src="myApp.js"></script>
    
  2. 如果我在myApp中执行类似var externalLib = new ExternalLibrary()的操作,myApp和externalLibrary都使用jQuery或其他第三方库;我的捆绑包是否包括externalLibrary(考虑到它的webpack配置?)并且树摇动和一切? jQuery代码是重复还是只包含externalLibrary和myApp所需的代码?

  3. 如何在我的应用程序中使用webpack,该应用程序使用也使用webpack构建的外部库?我的代码和库代码是否共享一个依赖项,该依赖项是一次还是两次加载?

1 个答案:

答案 0 :(得分:0)

我想详细回答您的问题,需要更多信息:

  • 您是否在同一个webpack项目/实例中构建外部库,或者它是一个与其自己的webpack配置不同的项目?

  • package.json中引用的外部库是否依赖?或者直接嵌入到项目中(例如在自己的文件夹中)?

这里有一些可能对您有帮助的要点:

  • 如果您多次执行var externalLib = new ExternalLibrary(),它将创建该ExternalLibrary的多个实例。这不是Webpack的责任,而是您的代码。如果要仅将其实例化一次,则创建一次并在任何地方引用它。 Webpack的作用是,当您执行myApp.js时,它确保该库的构造函数只包含在const ExternalLib = require('external-lib')中一次。

  • 默认情况下,Webpack只会注释死代码,但不会将其删除(树摇动),除非您使用UglifyJSPluginas shown in the docs这样的插件。

  • 如果您多次包含同一个文件(即使其他软件包,例如require('jquery')首先包含在他们的&#34; main&#34;文件中),它只会被webpack解析一次,然后无论在何处使用,都可以在代码中引用。