J'ai vérifié un dépôt qui utilise du fil au lieu de npm comme outil de construction.
dans le package.json, il définit des espaces de travail pour gérer plusieurs sous-projets:
{
"workspaces": [
"packages/*"
],
"dependencies": [],
"devDependencies": [
// long list
]
}
Par conséquent, la racine package.json
ne contient aucune dépendance d'exécution. Seulement le packages/*/package.json
les contenir.
Pour compiler (et démarrer en mode dev), je fais:
yarn install
yarn start
Je n'ai trouvé aucune documentation, que workspaces
est également reconnu et correctement utilisé par npm.
Existe-t-il un moyen de le faire fonctionner avec npm également?
La gestion des dépendances dans un monorepo n'est pas prise en charge avec npm. Le package Lerna est utilisé pour gérer les projets JavaScript avec des dépendances croisées. Je crois que Lerna utilise Yarn sous le capot, mais avec Yarn comme gestionnaire de packages de votre projet, cette fonctionnalité est prise en charge dès la sortie de la boîte.
Voici un dépôt qui pourrait être utile pour voir comment Yarn et Lerna fonctionnent ensemble: https://github.com/Quramy/lerna-yarn-workspaces-example