一般来说,项目所需要的第三方依赖可以通过包管理器的 install 命令安装,在安装第三方依赖成功后,这些第三方依赖一般会出现在项目 package.json 的 dependencies 和 devDependencies 下。
"dependencies" 下的依赖通常来说是这个包运行所需的依赖, "devDependencies" 则代表着开发依赖。
除了 "dependencies" 以外,"peerDependencies" 也可以声明在生产环境下运行所需要的依赖,此时会和它的宿主共享一份依赖。
在 Modern.js Module 里,默认情况下不会对 "dependencies" 以及 "peerDependencies" 下的第三方依赖进行打包处理。
这是因为在安装 npm 包时,其 "dependencies" 也会被安装。不打包 "dependencies",可以减小包产物的体积。
如果需要打包某些依赖,建议将它们从 "dependencies" 挪到 "devDependencies" ,这相当于对依赖进行 prebundle ,可以减小依赖安装的体积。
如果项目依赖了 react:
当源码中使用了 react 依赖:
此时产物中不会包含 react 的代码:
如果想要修改默认的处理方式,可以通过下面的 API 进行修改:
在上面我们提到了 buildConfig.autoExternal API 的用途,同时 buildConfig.externals 可以实现对三方依赖更细微的处理。
例如当我们需要仅对某些依赖不进行打包处理的时候,可以按照如下方式进行配置:
一般这种情况,可能是某些依赖不适合进行打包处理。如果遇到这种情况,则可以按照下面的方式进行处理。