comment spécifier les modules locaux comme les dépendances de package npm
J'ai une application qui a l'habitude de définir des dépendances sur les modules tiers (par exemple 'express') spécifié dans le package.fichier json en vertu de dépendances. E. g.
"express" : "3.1.1"
Je tiens à structurer mon code modulaire et un ensemble de locaux (sens sur le système de fichiers, je suis actuellement en) modules installés par le paquet.json. Je sais que je peux installer un module local en cours d'exécution:
npm install path/to/mymodule
Cependant, je ne sais pas comment faire ça via le package.json dépendances de la structure. À l'aide de la --save
option dans cette commande est simplement la mise "mymodule": "0.0.0"
dans mon colis.json (ne fait pas référence au chemin d'accès de l'emplacement). Si je puis supprimer la version installée de node_modules, et essayer de ré-installer à partir de l'emballage.json, il échoue (car il a l'air de "mymodule" dans le registre central, et n'a pas l'air localement).
Je suis sûr que les est une façon de dire à l' "dependencies": {}
structure que je veux qu'il soit installé à partir d'un chemin du système de fichiers, mais vous ne savez pas comment.
Quelqu'un d'autre a eu ce problème?
Merci.
- Vraiment une bonne question. Triste de réaliser qu'il n'y a pas de fonction équivalente pour
package.json
à ce que nous avons enGemfile
s. - double possible de Local de dépendance dans le paquet.json
Vous devez vous connecter pour publier un commentaire.
Réponse courte:
Remarque: assurez-vous que votre projet local est configuré en tant que module. Voir La création de modules NodeJS.
Comme de la NGP 2.0.0, l'importation des dépendances locales est pris en charge nativement. C'était documenté par danilopopeye en réponse à une question similaire. J'ai copié sa réponse ici pour aider toute personne ayant besoin de trouver la bonne réponse, que cette question occupe une position de leader dans les résultats de recherche Google.
"mymodule":"file:mymoduledir"
npm install --save ../my-local-repo
import { HelloWorld } from "my-test-lib";
, mais je reçois "je ne peux pas trouver le module de l'erreur. S'il vous plaît, jetez un oeil à stackoverflow.com/questions/46818083/...import { HelloWorld } from "my-test-lib";
Voir: Local de dépendance dans le paquet.json
Il semble que la réponse est
npm link
: https://docs.npmjs.com/cli/linksymlink
comment le projet parent de savoir à reconstruire une fois de la dépendance a fini de construire?Je ne pouvais pas trouver un moyen sympa à la fin, j'ai donc créer un répertoire appelé
local_modules
et ensuite ajouté ce bashscript pour le package.json dans les scripts->préinstallerAprès avoir lutté avec le
npm link
de commande (solution suggérée pour le développement des modules sans les publiant sur un registre ou le maintien d'une copie dans le dossier node_modules), j'ai construit un petit module npm pour aider avec ce problème.Le correctif nécessite deux étapes faciles.
Première:
Deuxième, ajoutez ceci à votre
package.json
:Plus de détails à https://www.npmjs.com/package/lib-manager. Espérons que cela aide quelqu'un.
Si c'est acceptable de simplement publier vos modules préinstallés dans node_modules à côté de vos autres fichiers, vous pouvez le faire comme ceci:
Vous pouvez également stocker votre module sur git et dites à votre package parent.json pour installer la dépendance à partir de git: https://npmjs.org/doc/json.html#Git-URLs-as-Dependencies