Maison > interface Web > js tutoriel > Comment modifier élégamment les bibliothèques dépendantes dans node_modules ? Présentation de la méthode

Comment modifier élégamment les bibliothèques dépendantes dans node_modules ? Présentation de la méthode

青灯夜游
Libérer: 2022-01-31 09:00:31
avant
2896 Les gens l'ont consulté

nodeComment modifier élégamment les bibliothèques dépendantes de node_modules dans le projet ? L'article suivant vous montrera comment modifier élégamment les bibliothèques dépendantes dans node_modules. J'espère que cela vous sera utile !

Comment modifier élégamment les bibliothèques dépendantes dans node_modules ? Présentation de la méthode

J'ai récemment utilisé un projet open source au sein de l'entreprise. En raison de besoins commerciaux (non adapté aux modifications commerciales MR), je dois simplement modifier le code source de @tencent/wuji-server-lite. json est le suivant :

"dependencies": {     
  "@tencent/taf-config": "^2.0.4",    
  "@tencent/wuji-server-lite": "2.0.30",     
  "patch-package": "^6.2.0"  
}
Copier après la connexion

Généralement, nous avons deux approches :

  • Méthode 1 : Changer le nom du code modifié, le reconditionner et le soumettre à tnpm, puis référencer directement ce nouveau package

  • Méthode 2 : déplacer la copie de code hors de node_modules en tant que dépendance locale

Quelle que soit la méthode ci-dessus utilisée, en tant que passionné de code, je me sens très gêné d'avoir modifié une ou deux lignes de code dans un certain cas. fichier, mais j'ai dû copier l'intégralité du projet d'une manière tellement lourde, encore plus. Le pire, c'est que vous risquez d'oublier ce que vous avez modifié à la fin, et il n'y a aucune différence à retracer.

J'ai consulté plusieurs utilisateurs de nodejs à cette époque. Au cours des deux dernières années, lorsque je n'utilisais pas nodejs, nodejs avait-il fourni des méthodes avancées pour résoudre ce problème ? Par exemple, je pouvais spécifier node_modules. est remplacé par un autre local ? La réponse est non.

Soudain, j'ai eu l'idée de créer un package npm pour résoudre moi-même ce genre de problème, puis je l'ai recherché sur Google à l'avance comme d'habitude, pour découvrir qu'une telle chose existait déjà, appelée patch-package (https://www .npmjs.com/package/patch-package), il semble que la date de sortie était il y a deux ans. Si je n'avais pas créé le jeu de poulet mobile à mi-chemin, peut-être que cette bibliothèque aurait été créée par moi en premier lieu, haha.

Puisque je n’ai pas besoin de réinventer une roue, permettez-moi de vous expliquer comment l’utiliser ensuite.

1. Installation locale, npm i patch-package

2. Ajoutez { "postinstall": "patch-package" } aux scripts de package.json, qui sera installé après le dépendant. Le package est installé. Exécutez

3. Modifiez le code dans node_modules

4. Générez des correctifs, npx patch-package your-package-name

5. Après avoir soumis les correctifs, réinstallez le package et vous constaterez qu'il s'agit du package. résultat de votre modification

Comment modifier élégamment les bibliothèques dépendantes dans node_modules ? Présentation de la méthode

Enfin, il y a une comparaison très détaillée sur le site officiel de cette bibliothèque, qui décrit quand utiliser le patch et quand forker. La description est très précise :

Comment modifier élégamment les bibliothèques dépendantes dans node_modules ? Présentation de la méthode

Pour plus de nœud. -connaissances connexes, veuillez visiter : tutoriel nodejs !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:zhihu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal