部分前端概念

65 阅读2分钟

monorepo

image.png

优点:

  • 一个仓库中多个相关项目;
  • 很容易看到整个代码库的变化趋势,更好的团队协作;
  • 相同版本依赖只安装一次;
  • 代码复用高,方便进行代码重构;
  • 工程配置一致,代码质量标准及风格也很容易一致;
  • 构建性 Monorepo 工具可以配置依赖项目的构建优先级,可以实现一次命令完成所有的部署。

缺点:

  • 代码改动容易出现风险,一个地方错误改动容易影响到其他项目代码
  • 代码体积较大,git clone的时间较长。

pnpm

  • 节省磁盘空间

当使用 npm 时,如果你有 100 个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100 份该相同依赖包的副本。然而,如果是使用 pnpm,依赖包将被 存放在一个统一的位置。

  1. 如果你对同一依赖包需要使用不同的版本,则仅有 版本之间不同的文件会被存储起来。例如,如果某个依赖包包含 100 个文件,其发布了一个新 版本,并且新版本中只有一个文件有修改,则 pnpm update 只需要添加一个 新文件到存储中,而不会因为一个文件的修改而保存依赖包的 所有文件。
  2. 所有文件都保存在硬盘上的统一的位置。当安装软件包时, 其包含的所有文件都会硬链接自此位置,而不会占用 额外的硬盘空间。这让你可以在项目之间方便地共享相同版本的依赖包。
  • 提升安装速度

pnpm的整个依赖安装的过程很像tree-shaking的过程,会先安装加载使用到的依赖,然后加载安装文件中剩余的相关依赖。

  • 推送直接依赖包到node_modules文件

npm和yarn会将下载的依赖全部推送到node_modules文件夹内,但是pnpm会只将项目依赖推送到node_modules.

WebPack的Plugin

  • 定义一个JS类也就是插件名,到时候在webpack的plugin配置上new className()。
  • apply(compiler),compiler是webpack的plugin的整个生命周期的对象
  • compiler在webpack的生命周期的某个钩子上创建一个compilation,也就是一次webpack运作的实例对象
  • 对该实例对象的编写核心的代码逻辑
  • 在webpack的生命周期运行到该钩子的时候就会执行该串代码