TL; DR Comment configurer différents "sous-modules" dans un projet modulaire node.js
pour se référer aussi simplement que possible? J'essaie de me concentrer sur les paquets locaux pour NPM, en particulier en ce qui concerne un projet modulaire.Nœud/NPM gérant des packages locaux
Je construis une application web avec une interface frontale et une API back-end. Ceux-ci doivent partager un paquet qui exporte des modèles simples. Ma structure de répertoire du projet ressemble à ceci:
package
├── api
│ ├── dist
│ │ └── <compiled files>
│ ├── node_modules
│ │ └── ...
│ ├── package.json
│ └── src
│ └── <source files>
├── application
│ ├── dist
│ │ └── <compiled files>
│ ├── node_modules
│ │ └── ...
│ ├── package.json
│ └── src
│ └── <source files>
└── models
├── dist
│ └── <compiled files>
├── node_modules
│ └── ...
├── package.json
└── src
└── <source files>
Les deux projets API et applications vont utiliser des modèles, donc j'abstraire ce code à un sous-module séparé dans mon projet.
J'ai lu la documentation pour npm link
et cela semble être la bonne approche parce que, si je comprends bien, il symbolise le paquet dans le répertoire node_modules
. Cela donne accès au code tel qu'il existe actuellement, au lieu d'installer une copie dans node_modules
. Cela ressemble à ce dont j'ai besoin, mais il y a une ride: je travaille sur ce projet à partir de plusieurs endroits différents: mon ordinateur portable, mon bureau au travail, et parfois de la maison. En outre, d'autres contribueront à ce projet à l'avenir.
Je voudrais que ce soit aussi simple que possible pour qu'un nouveau contributeur se lance dans le développement.
Actuellement, un nouveau contributeur passe par ces étapes:
- clone le dépôt
cd
dans les modèles dir- run
npm install
npm link
- run
cd
dans l'API dir- course
npm install
npm link models
- course
cd
dans l'application dir- course
npm install
npm link models
- course
- commencer à travailler
Ce que je voudrais faire (et je pense que npm
devrait être capable de faire) est:
- clone le dépôt
cd
dans les modèles dir- exécuter
npm install
- exécuter
cd
dans le api dir- run
npm install
- run
cd
dans l'application dir- run
npm install
- run
- commencer à travailler
Je pourrais écrire un script pour faire cela, mais cela semble être un cas d'utilisation évident pour npm
et je pense qu'il est probablement capable de faire quelque chose comme ça. Je pense que je peux oublier quelque chose parce que je ne le trouve pas dans la documentation.
Est-il vraiment nécessaire d'avoir trois 'package.json' séparés? Ne devriez-vous pas créer un fichier principal 'json'? Je n'ai pas été dans une situation où c'est encore un besoin –
Pourquoi? NPM fait déjà la déduplication pour vous. S'il s'agit d'un projet, vous n'avez pas besoin de trois fichiers package.json, utilisez-en un seul. D'un autre côté, si ce sont trois projets différents qui sont indépendants et peuvent être publiés chacun de leur propre chef, alors bonne nouvelle: npm fera automatiquement la déduplication basée sur le lien pour vous. –
Re: fichiers package.json multiples - finalement, ce code sera exécuté dans plusieurs conteneurs docker et je cherchais un moyen de s'assurer que les dépendances inutiles sont installés. Par exemple, si le conteneur d'API a besoin d'une dépendance que le conteneur d'application ne possède pas, cela semble être le moyen le plus simple d'éviter de l'installer là où il n'est pas nécessaire. – Kryten