https://docs.npmjs.com/cli/v10/using-npm/workspaces
NPM的workspace是NPM v7.0.0引入的一项新特性,它旨在改进对管理多个软件包或项目的支持,尤其是对Monorepo的支持。你可以将一个NPM workspace理解为一个拥有自己的package.json文件的项目或软件包,而所有这些workspace则共享一个顶层的node_modules目录,该目录中的包可以被所有workspace使用。
在一个NPM workspace中,你可以轻松地跨项目安装、链接和管理依赖性,而无需重复安装相同的依赖性或手动链接本地软件包。这极大地简化了管理多个交互项目的复杂性,并提高了安装和构建的速度。
NPM workspace的使用大致如下:
- 在项目根目录创建一个
package.json
文件,其中包含一个workspaces
字段。该字段是一个包含所有workspace路径的数组。例如:
json
{
"name": "root",
"workspaces": [
"packages/*"
]
}
- 在每个workspace(例如
packages/*
)下创建一个package.json
文件。这些文件包含每个workspace的依赖性和其他NPM设置。
然后,你就可以在根目录运行npm install
来同时安装所有workspace的依赖性。你也可以使用npm workspace <workspace_name> add <package>
命令来为特定的workspace添加依赖性。
总体来说,NPM的workspaces提供了一种在单一的代码库中管理和操作多个项目或软件包的有效方式。