Nodejs Workspaces 实战

1. Workspaces 介绍

Nodejs 的依赖包安装,几乎所有人都知道是执行 npm install 完了后,就会在目录下创建 node_modules 文件夹,然后所有的包都会放到这个目录下,但是如果我们多个工程都依赖同一个包的时候,就会导致,每个工程都要安装一次,浪费磁盘空间;比如如果我们是作为前端开发,经常使用 Vue 开发工程,然后我们的工程使用的是 vitejs 作为构建工具,如果我们有2个工程,我们的磁盘上就会安装 vitejsvue 及其依赖两次。

为了解决这样的情况,yarnpnpm 出了工作区(Workspaces)模式,就是将依赖集中安装在一个位置,相同的依赖也只会安装一次。同时 npm7.0 开始,也开始支持 Workspaces 模式了。

关于工作区的介绍请参考:Workspaces

2. Workspaces 使用

下面介绍 Workspaces 基本使用:

  1. 首先新建一个目录

需要新建一个目录作为 Workspaces 根目录,例如:vite-pros

  1. 新建 package.json 文件

在目录下新建一个 package.json 文件,内容填充如下:

{
  "name": "vite-pros",
  "description": "使用 vite 作为构建工具的前端项目",
  "private": true,
  "workspaces": [
    "packages/*"
  ]
}

其中 private: true 是必需的!工作区并不意味着要发布,所以增加了这个安全措施,以确保没有任何东西可以意外暴露它们。workspaces 字段是包含每个工作区的路径的数组。由于追踪每个路径可能很乏味,因此该字段也接受glob模式!

  1. 新建 packages 目录
  2. packages 目录下就是我们的正常的工程了。

3. npmyarnWorkspaces 命令介绍

  1. 安装依赖

      [yarn|npm] install
  2. 为某一个子项目安装依赖

      // npm
      npm install vue -w pro1
      // yarn
      yarn workspace pro1 add -D react

    pro1 就是 packages 目录下对应的 pro1 目录,并且 pro1 目录的 package.json 文件的 name 就是 pro1name: pro1

    这里可以依赖同一个工作区下的其它工程,以 yarn 为例,如果依赖同工作区下的其它工程,package.jsondependencies 就会发生改变,例如:"ph-utils": "workspace:packages/utils""ph-terminal-spinner": "workspace:packages/terminal-spinner" 这就表明依赖的是同一个工作区的其它工程。
    这样的可能有人就会有疑问了,如果 package.json 改变了后,上传后会怎么样呢?这个就是下面的命令了。
  3. 发布

      // npm
      npm publish
      // yarn 发布的时候,会自动替换本地依赖的版本
      yarn workspace pro1 npm publish
    yarn 发布的时候,如果会有本地有本地依赖如:"ph-utils": "workspace:packages/utils" 则会被替换为 "ph-utils": "0.0.1" 其中 0.0.1 就是本地 ph-utils 的版本。

关于更多的 yarn workspaces 的命令和介绍请参考:yarn workspace命令yarn workspace介绍

关于更多的 npm workspaces 的介绍:npm workspaces

其实关于 workspaces 还有两个工具可以用:pnpm workspacesLerna

pnpm 和 npm、yarn 一样都是依赖包管理工具,是作为 npm、yarn 的替代使用的。而 Lerna 不一样它可以配合依赖包工具来使用,来实现更强大的管理。
上一篇:Nodejs fastify 登录校验


下一篇:jdbc操作根据bean类自动组装sql,天啦,我感觉我实现了hibernate