L'utilisation de Sinopia pour créer un entrepôt npm privé ne peut pas télécharger les packages avec le symbole @

Préface

Cet article relate principalement les pièges que j'ai rencontrés après la construction de l'entrepôt npm dans le projet. Il ne s'agit pas de savoir comment construire un entrepôt npm privé.

1. Pourquoi construire un entrepôt npm privé ?

Toutes les entreprises n'ont pas besoin de créer un entrepôt NPM privé pour gérer le code. Cela dépend des besoins de l'entreprise. Étant donné que nos produits sont destinés à de nombreux clients et que différents clients ont des exigences fonctionnelles différentes pour ce produit, par exemple : I L'entreprise a a maintenant développé trois modules A, B et C. Le produit du client 1 ne nécessite que des modules A et B, le produit du client 2 ne nécessite que des modules A et C, le produit du client C ne nécessite que des modules B et C et le produit du client D ne nécessite que A et C. modules. Le produit nécessite les modules A, B et C. C'est le scénario de notre entreprise. Bien sûr, vous pouvez dire que vous pouvez simplement copier le code, pourquoi s'embêter avec tant de problèmes ?Mais quand je ne l'ai pas dit, l'avantage évident de l'empaquetage de modules métier est que je peux écrire un ensemble de scripts pour m'aider à télécharger les packages nécessaires au produit, puis une fois combinés, emballés et publiés, il devient un nouveau produit. C'est l'avantage de l'automatisation. Ensuite, il peut y avoir plusieurs projets basés sur cette pile technologique, donc certains composants peuvent être partagés, donc notre société prévoit d'encapsuler certains composants qui ne sont pas disponibles sur le marché, puis de former une bibliothèque de composants à utiliser par plusieurs projets de l'entreprise, puis s'il existe des packages disponibles sur l'Internet public, accédez simplement à l'Internet public et téléchargez-les.

2. Comment construire un entrepôt npm privé ?

Puisque cet article n'est pas un article sur la façon de construire un entrepôt npm privé, veuillez visiter ce lien -> Comment construire un entrepôt npm privé. Concernant la façon de construire un entrepôt npm privé, cet article l'a déjà expliqué très clairement. Voici juste une chose à mentionner est que l'entrepôt privé npm peut configurer l'adresse publique de l'entrepôt du proxy. L'explication détaillée est la suivante : s'il n'y a pas de package npm dans votre entrepôt privé, il ira à l'adresse proxy que vous avez configurée pour trouver le npm emballer. L'adresse de l'entrepôt proxy peut être configurée config.yaml配置文件à l'intérieur . Pour plus de détails, veuillez vous référer à l'article sur la façon de créer un lien d'entrepôt npm privé ci-dessus.uplinks:npmjs:url:http://registry.npm.taobao.org/

3. Quels pièges avez-vous rencontrés après la construction de l'entrepôt privé npm ?

J'ai découvert qu'après avoir utilisé nrm pour basculer vers la source correspondant à l'entrepôt privé npm, le téléchargement @du package avec le symbole a échoué. Par exemple, @angular/corele téléchargement a échoué. Pourquoi ? Après avoir vérifié certaines informations, j'ai découvert qu'il s'agissait en fait de celui de Sinopia. propre bug. La raison du bug est la suivante : sinopia在代理到npmjs.org公有库时将@符号转码为%40,致使在公有库中找不到对应的包,返回404, pour le dire simplement, @angular/coreil est converti lorsque la demande de proxy est effectuée %40angular/core, nous devons donc le reconvertir avant que la demande de proxy ne soit émise.@angular/core

4. Comment le résoudre ?

Modifiez le code source de sinopia : Modifiez la ligne 10 du fichier sinopia/lib/up-storage.js : change var encode = encodeURIComponen;, en : var encode = function(thing) {return encodeURIComponent(thing).replace(/^%40/, '@');};, la signification de ce code est de reconvertir %40 en @, résolvant ainsi le problème de ne pas pouvoir pour télécharger des fichiers avec le bug du package @ symbol npm

5. Une meilleure solution ?

Depuis que l'auteur de sinopia a arrêté de maintenir et de mettre à jour sinopia il y a deux ans, un fork de sinopia est apparu nommé Verdaccio, puis Verdaccio a continué à mettre à jour et à maintenir sinopia. Plus précisément, comment utiliser Verdaccio pour créer un serveur npm privé ? Veuillez consulter le github de Verdaccio introduction

Guess you like

Origin blog.csdn.net/luo1055120207/article/details/76592464