Using workspaces to implement monorepos
As the need for monorepos grew, npm clients tried to help users by incorporating them. The first of the big three was Yarn. Already, with the first version of Yarn, a new concept called Yarn workspaces was introduced, which was represented by a special field called workspaces
in package.json
:
package.json
{
"name": "monorepo-root",
"private": true,
"workspaces": [
"packages/*"
]
}
Yarn workspaces require a package.json
at the root directory of the monorepo. This package.json
won’t be used for publishing and needs to have the private
field set to true
. The workspaces
field itself is an array that contains the paths to the different packages. Wildcards using the *
or **
symbols – as shown here – are allowed.
With npm v7, the standard npm client also received a workspaces feature. The feature...