Pipeline Azure – exclure les packages « déjà installés » dans la version angulaire de la commande « npm install »

la programmation


Problème pour – Pipeline Azure Build pour un projet angulaire.
Je dois exécuter le travail d’installation npm à chaque fois que le projet angulaire est construit avec une nouvelle demande d’extraction.

Scénario – J’ai personnalisé 2 packages pour les besoins de mon projet. Je ne veux pas remplacer ces packages à chaque fois qu’il y a une commande npm install. Une fois qu’il est remplacé manuellement, il ne doit plus être touché.

Existe-t-il un moyen d’ignorer un package particulier dans package.json une fois qu’il est installé ?
en d’autres termes, est-il possible d’installer un package npm uniquement s’il n’a pas déjà été installé ?
Je cherche des conseils d’experts 🙂

Ce que j’ai essayé :

1. Excluez ces packages du fichier package.json

Problème avec cette solution – Si je dois déployer mon application sur le nouveau système, ces packages ne seront jamais installés.

2. J’ai ajouté ces packages dans un dossier différent et j’ai essayé de référencer les packages à partir de là. Cela ne fonctionne pas comme prévu.

Solution 2

Vous pouvez essayer ce qui suit :

Utilisation de npm-shrinkwrap.json

1. Personnaliser et installer les packages : installez et personnalisez initialement vos packages selon vos besoins.
2. Générez npm-shrinkwrap.json : exécutez npm Shrinkwrap dans le répertoire de votre projet. Cette commande crée un fichier npm-shrinkwrap.json qui verrouille les versions de tous les packages installés et leurs dépendances.
3. Modifiez npm-shrinkwrap.json : dans npm-shrinkwrap.json, vous pouvez modifier manuellement les entrées de vos packages personnalisés pour pointer vers vos versions spécifiques ou vos copies locales. De cette façon, chaque fois que npm install s’exécute, il respecte les versions et les sources spécifiées dans npm-shrinkwrap.json, ignorant les mises à jour ou les modifications qui seraient normalement extraites du registre npm.

Si cela ne fonctionne pas, essayez avec les chemins locaux :

Tirer parti de package-lock.json avec les chemins locaux

1. Installez les packages personnalisés localement : placez vos packages personnalisés dans un répertoire connu de votre projet ou dans un endroit accessible à votre projet.
2. Modifiez package.json : référencez ces packages locaux dans votre package.json en spécifiant leurs chemins au lieu des numéros de version.

JSON
"dependencies": {
  "custom-package": "file:./path/to/custom-package",
}

3.Commit package-lock.json : après avoir exécuté l’installation de npm, assurez-vous que votre package-lock.json est mis à jour et validez ce fichier dans votre référentiel. Le package-lock.json garantit que la structure exacte de votre répertoire node_modules est répliquée sur les futures installations, y compris l’utilisation de packages locaux.

Je conseillerais d’utiliser la première méthode to, si cela ne fonctionne pas, vous pouvez remplacer les packages.

Utilisation de .npmrc pour remplacer les emplacements des packages

Configurer .npmrc : vous pouvez utiliser un fichier .npmrc pour remplacer l’emplacement source de packages spécifiques. C’est un peu plus avancé et généralement utilisé pour basculer entre différents registres, mais vous pouvez spécifier des chemins locaux ou des URL personnalisées pour vos packages.

Cependant, cette approche nécessite que vos packages soient structurés et puissent être installés d’une manière similaire à ceux hébergés sur les registres npm, ce qui peut impliquer une configuration supplémentaire pour vos packages personnalisés.

コメント

タイトルとURLをコピーしました