DépÎt npm local (hors ligne)


Contexte


DĂ©cidant de vendre Ă  un prix Ă©levĂ©, je me suis retrouvĂ© chez l'employeur, oĂč il n'y a pas d'Internet non seulement dans le circuit industriel, mais aussi chez la jeune fille (la situation n'est en fait pas rare dans beaucoup, pour ainsi dire, les "entreprises"). Il y a IE dans la console oĂč vous, mon cher lecteur, pouvez bien sĂ»r regarder Habr ou stackoverflow, mais pas plus. En gĂ©nĂ©ral, je le rĂ©pĂšte, la situation n'est pas exceptionnelle, vous pouvez vivre avec - ici, mon ordinateur portable personnel sur lequel je l'Ă©cris, est sur la table ... est-ce que le wifi est soulevĂ© par de nombreux employĂ©s, est-il cellulaire comme modem, en gĂ©nĂ©ral, si ce n'est pas une dĂ©fense / tous les services de trois lettres (ici je vous conseille de suivre des voies officielles coĂ»teuses, comme ce sera quelques mots ci-dessous) et il n'y a pas de service de surveillance radio, alors vous ĂȘtes libre de faire quoi que ce soit avec votre ordinateur portable personnel (dans les limites autorisĂ©es :)), eh bien, du moins, c'est comme ça que ça se passe chez nous. Il est possible de faire glisser des fichiers dans l'environnement de dĂ©veloppement, mais je n'aimais vraiment pas la dĂ©cision de conserver node_modules dans la base de code et j'ai retroussĂ© mes manches (j'ai retroussĂ© mes manches plusieurs fois Ă  la fois sur le passage de TFS Ă  git et sur le dĂ©pĂŽt de nuget local, mais ce sont des histoires sĂ©parĂ©es, non seulement sans drame, mais Ă  leur sujet en quelque sorte la prochaine fois). Il existe plusieurs solutions assez coĂ»teuses au problĂšme, il est possible que je puisse mĂȘme faire avancer certains Artifactory, mais quand j'ai imaginĂ© combien cela prendrait et surtout, combien de temps cela serait dĂ©cidĂ©, coordonnĂ© et mis en Ɠuvre, il a Ă©tĂ© dĂ©cidĂ© d'agir Ă  moindre coĂ»t et avec colĂšre.


Avertissement: étant donné que j'avais un environnement Windows, je décris en détail exactement le travail dans la console Windows, cependant, en substance, les différences ne seront à la fin que lorsque vous souhaitez augmenter le résultat final en tant que service / démon.


Pas Tomi, Ăąme soeur, comment?


En action:


  • Un ordinateur avec accĂšs Internet - appelez-le source
  • Un ordinateur sans accĂšs, sur un rĂ©seau d'entreprise - appelez-le la machine cible

Il doit y avoir node.js sur la source et sur la machine cible (la maniĂšre la plus simple est si une version ou une version similaire).


Créez un papa sur la source, quelque part et appelez-le, par exemple, verdaccio:


mkdir verdaccio cd verdaccio 

AprÚs avoir installé Verdaccio localement, c'est une chose trÚs utile, basée sur l'ancien projet sinopia. En savoir plus ici: https://verdaccio.org/ .


En bref, il s'agit d'un proxy pour npm, qui peut mettre en cache. Pour de nombreux utilisateurs de ce package, l'opportunitĂ© clĂ© est la possibilitĂ© de publier en privĂ©, mais mon cas est lĂ©gĂšrement diffĂ©rent, je voulais mettre en cache tout ce dont j'ai besoin pour travailler et un peu plus, puis tout transfĂ©rer sur la machine cible. Pour l’avenir, je dirai que tout s’est dĂ©roulĂ© sans douleur, Ă  l’exception du transfert de nƓuds. C'est la racine de ses tarballs que j'ai passĂ© un jour et demi (il y a une partie native qui est chargĂ©e depuis le github pendant le processus d'installation ou va gyp, si cela ne fonctionnait pas soudainement - pensez-y, ça va ĂȘtre construit sur chaque machine de dĂ©veloppement local, ce qui est complĂštement inconfortable), mais c'est probablement une autre histoire aussi.


Ici, tout est simple:


 npm i verdaccio 

En gĂ©nĂ©ral, le manuel recommande d'installer globalement, mais en fait ce n'est pas du tout nĂ©cessaire, de plus, nous voulons localiser toute cette honte dans un dossier, afin que plus tard, il puisse ĂȘtre copiĂ© commodĂ©ment. Parce que oui ...


Exécutez le package, il créera le stockage et la configuration par défaut:


 .\node_modules\.bin\verdaccio.cmd 


Ensuite, tout le monde nous a dit oĂč se trouvait la config, sur quel port nous Ă©tions suspendus.


En principe, vous pouvez déjà aller à l'adresse spécifiée et voir quelque chose comme ceci:



Maintenant, nous devons faire quelques choses:


  • Vider npm-cache ( plus de dĂ©tails ici , en bref, tuer le contenu de % AppData% / npm-cache )


  • ExĂ©cuter


     npm set registry http://localhost:4873/ 

  • Copiez config.yaml dans notre dossier verdaccio confortable


  • Assurez-vous que la section des liaisons montantes de ce fichier ressemble Ă  ceci:


     uplinks: npmjs: url: https://registry.npmjs.org/ cache: true 

  • À la fin de la configuration, ajoutez:


     listen: - 0.0.0.0:4873 

    Si cela n'est pas fait, vous ne pourrez plus accéder à l'adresse locale ultérieurement sur la machine cible.


  • En fait, nous sommes prĂȘts, maintenant tous les packages que nous prenons par le biais de npm install seront installĂ©s dans ./storage, ce dont nous avons besoin. Nous restaurons le projet cible, dĂ©finissez en outre:



 npm i node-windows 

C'est tout, aprĂšs cela, nous prenons le dossier et l'envoyons Ă  la machine cible de toutes les maniĂšres possibles pour vous (les droits d' administrateur sont nĂ©cessaires lĂ , oui). Vous pouvez dĂ©jĂ  y ĂȘtre, vous pouvez immĂ©diatement crĂ©er un fichier Ă  la racine du dossier installservice.js:


 var Service = require('node-windows').Service; var svc = new Service({ name: 'VerdaccioSvc', description: 'Verdaccio - npm local repository', script: ' <   >\\node_modules\\verdaccio\\bin\\verdaccio', nodeOptions: [] }); svc.on('install', function() {svc.start();}); svc.install(); 

Nous lançons:


 node installservice.js 

Profitez-en!


En général, nous avons réussi à obtenir un référentiel local avec assez peu de sang, les builds se construisent, les développeurs développent tout dans ce monde à leur place. Et oui, la synchronisation ultérieure revient à copier le contenu de ./storage .


Tout cela a Ă©tĂ© Ă©crit en partie sous forme de mĂ©mo et en partie pour vous faire gagner du temps (la tĂąche ne sera probablement pas rĂ©solue trop souvent), car si une fleur en pierre ne sort pas, n'hĂ©sitez pas Ă  Ă©crire, il y a une chance que j'oublie de dĂ©crire une sorte de dĂ©tail, et si je n’ai pas oubliĂ©, tout Ă  coup, je vais vous aider ...

Source: https://habr.com/ru/post/fr453614/


All Articles