Lokales (offline) npm-Repository


Hintergrund


Als ich mich entschied, zu einem hohen Preis zu verkaufen, landete ich beim Arbeitgeber, wo es nicht nur im Industriekreis, sondern auch in der Jungfrau kein Internet gibt (die Situation ist in vielen sozusagen "Unternehmen" eigentlich nicht ungewöhnlich). Es gibt einen IE in der Konsole, in dem Sie, mein lieber Leser, natürlich Habr oder Stackoverflow sehen können, aber nicht mehr. Im Allgemeinen, wiederhole ich, ist die Situation nicht außergewöhnlich, man kann damit leben - hier liegt mein persönlicher Laptop, auf dem ich ihn schreibe, auf dem Tisch ... wird er von vielen Mitarbeitern als WLAN genutzt, ist er als Modem im Allgemeinen mobil, wenn er keine Verteidigung ist / Alle Dienste mit drei Buchstaben (hier rate ich Ihnen, auf offiziell teuren Wegen zu gehen, wie im Folgenden einige Worte aufgeführt werden) und es gibt keinen Funküberwachungsdienst, dann können Sie alles mit Ihrem persönlichen Laptop tun (innerhalb des zulässigen Bereichs :)). Zumindest sieht es bei uns so aus. Es besteht die Möglichkeit, Dateien in die Entwicklungsumgebung zu ziehen, aber die Entscheidung, node_modules in der Codebasis zu belassen, hat mir nicht gefallen, und ich habe meine Ärmel hochgekrempelt (ich habe meine Ärmel oft hochgekrempelt, sowohl wegen des Wechsels von TFS zu git als auch wegen des lokalen Nuget-Repos). aber dies sind getrennte Geschichten, auch nicht ohne Drama, sondern irgendwie beim nächsten Mal). Es gibt mehrere ziemlich teure Lösungen für das Problem, es ist durchaus möglich, dass ich sogar Artifactory durchsetzen könnte, aber als ich mir vorstellte, wie viel dies dauern würde und vor allem, wie lange es entschieden, koordiniert und implementiert werden würde, wurde beschlossen, billig und wütend zu handeln.


Haftungsausschluss: Da ich eine Windows-Umgebung hatte, beschreibe ich die Arbeit in der Windows-Konsole genau. Im Wesentlichen werden die Unterschiede jedoch erst am Ende auftreten, wenn Sie das Endergebnis als Dienst / Daemon erhöhen möchten.


Nicht Tomi, Seelenverwandter, wie?


In Aktion beteiligt:


  • Ein Computer mit Internetzugang - nennen Sie es Quelle
  • Ein Computer ohne Zugriff in einem Unternehmensnetzwerk - nennen Sie ihn den Zielcomputer

Auf der Quelle und auf dem Zielcomputer muss node.js vorhanden sein (der einfachste Weg ist, wenn eine oder ähnliche Versionen vorhanden sind).


Erstellen Sie irgendwo einen Daddy an der Quelle und nennen Sie ihn beispielsweise verdaccio:


mkdir verdaccio cd verdaccio 

Nach der lokalen Installation von Verdaccio ist dies eine sehr nützliche Sache, die auf dem alten Sinopia-Projekt basiert. Lesen Sie hier mehr: https://verdaccio.org/ .


Kurz gesagt, dies ist ein Proxy für npm, der zwischengespeichert werden kann. Für so viele Benutzer dieses Pakets ist die wichtigste Möglichkeit die Möglichkeit, privat zu veröffentlichen. Mein Fall ist etwas anders. Ich wollte alles, was ich für die Arbeit benötige, und etwas mehr zwischenspeichern und dann alles auf den Zielcomputer übertragen. Mit Blick auf die Zukunft werde ich sagen, dass bis auf die Übertragung von Node-Sass alles ziemlich schmerzlos verlief. Es war die Wurzel ihrer Tarballs, die ich anderthalb Tage verbracht habe (es gibt einen nativen Teil, der während der Installation aus dem Github geladen wird oder gyp wird, wenn es nicht geklappt hat, denken Sie darüber nach, es wird auf jeder lokalen Entwicklungsmaschine gebaut, was völlig unangenehm ist), aber es ist wahrscheinlich eine andere Geschichte auch.


Hier ist alles einfach:


 npm i verdaccio 

Im Allgemeinen wird im Handbuch empfohlen, die Installation global durchzuführen. Dies ist jedoch überhaupt nicht erforderlich. Außerdem möchten wir all diese Schande in einem Ordner lokalisieren, damit sie später bequem kopiert werden kann. Weil so ...


Führen Sie das Paket aus, es wird der Standardspeicher und die Standardkonfiguration erstellt:


 .\node_modules\.bin\verdaccio.cmd 


Dann sagten uns nur alle, wo sich die Konfiguration befindet und an welchem ​​Port wir hängen.


Im Prinzip können Sie bereits zu der angegebenen Adresse gehen und so etwas sehen:



Jetzt müssen wir ein paar Dinge tun:


  • Löschen Sie den npm-Cache ( weitere Details hier , kurz gesagt, beenden Sie den Inhalt von % AppData% / npm-Cache )


  • Ausführen


     npm set registry http://localhost:4873/ 

  • Kopieren Sie config.yaml in unseren gemütlichen verdaccio-Ordner


  • Stellen Sie sicher, dass der Abschnitt mit den Uplinks in dieser Datei folgendermaßen aussieht:


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

  • Am Ende der Konfiguration hinzufügen:


     listen: - 0.0.0.0:4873 

    Wenn Sie dies nicht tun, können Sie die lokale Adresse später auf dem Zielcomputer nicht erreichen.


  • Eigentlich sind wir bereit, jetzt werden alle Pakete, die wir durch die npm-Installation mitnehmen, in ./storage abgelegt, was wir brauchen. Wir stellen das Zielprojekt wieder her, setzen zusätzlich:



 npm i node-windows 

Das ist alles, danach nehmen wir den Ordner und senden ihn auf jede für Sie mögliche Weise an den Zielcomputer (dort sind Administratorrechte erforderlich, ja). Sie können bereits dort eine Datei im Stammverzeichnis des Ordners installservice.js erstellen:


 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(); 

Wir starten:


 node installservice.js 

Viel Spaß!


Im Allgemeinen haben wir es geschafft, ein lokales Repository mit ziemlich wenig Blut zu bekommen, Builds werden gebaut, Entwickler entwickeln alles auf dieser Welt an ihren Orten. Und ja, bei der nachfolgenden Synchronisierung wird der Inhalt von ./storage kopiert .


All dies wurde teilweise als Memo niedergeschrieben, teilweise um Zeit für Sie zu sparen (die Aufgabe wird wahrscheinlich nicht zu oft gelöst), denn wenn eine Steinblume nicht herauskommt, können Sie gerne schreiben, es besteht die Möglichkeit, dass ich vergessen habe, eine Art von zu beschreiben Detail, und wenn ich nicht plötzlich vergessen habe, dann werde ich helfen ...

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


All Articles