web-dev-qa-db-fra.com

Comment installer npm -g sur un serveur hors ligne

Je dois installer une application "globale" npm sur un serveur hors ligne.

Il est facile d'installer une application normale:

npm install

et ensuite emballer les fichiers résultants. Soit manuellement ou en utilisant npm pack .

Cependant, comment puis-je installer une application globale (comportant un script d'installation) telle que pour toujours sans Internet?

npm install -g forever
26
Peter B

try npmbox , c’est le nouveau nom de npmzip qui vous permettra d’installer des paquets npm hors ligne avec un seul fichier

20
kamil

Vous pouvez installer des éléments à partir d’un fichier tarball, consultez la documentation npm . Vous pouvez trouver l'URL de la archive permanente avec npm view forever dist.tarball et la télécharger. Essayez quelque chose comme ça:

curl -so forever.tar.gz `npm view forever dist.tarball 2> /dev/null`
npm install ./forever.tar.gz -g

Mais vous devrez peut-être le faire pour toutes les dépendances également. Il y a peut-être un meilleur moyen mais c'est ce que j'ai trouvé dans ma recherche.

18
CodeRarity

Eh bien ... après une journée passée à essayer de le faire fonctionner avec les références ci-dessus (npmbox ou offline-npm), est venu avec quelque chose de beaucoup plus simple. Grâce à npmbox, je dois dire que ... L'idée est de conserver le cache de l'instance disposant d'un accès en ligne et de l'utiliser ensuite hors connexion. 

En machine avec internet:

1 - vider le cache npm: npm cache clear

2 - installer le paquet, disons que c'est x.y.z: npm install -g **package.x.y.z**

3 - copier le cache dans un dossier ... appelons-le comme ça (je suppose que le cache npm est dans le dossier racine, pas absolument sûr de ça): cp -R /.npm/* **/cache-whatever-folder**

En machine sans internet:

4 - amenez ce dossier avec cache quel que soit le dossier sur l'instance sans Internet, puis nettoyez le cache et installez-le (je ne vous dirai pas comment copier le dossier :)

npm cache clear

npm install --global --cache **/cache-whatever-folder** --optional --cache-min 99999999999 --shrinkwrap false **package.x.y.z**

Terminé

J'ai créé offline-npm pour que toutes les dépendances soient installées proprement. Pour les modules sans utilisation de node-gyp, tout devrait fonctionner comme décrit. 

Si vous avez besoin de node-gyp (qui est généralement installé en ligne), envisagez de copier ~/.node-gyp sur cet ordinateur hors ligne.

4
commenthol

INSTALLER PM2 HORS LIGNE: -

Testé sur Node-v6.10.3 et Npm-3.10.10 sur RHEL-7

Allez sur machine avec connexion internet: -  

#npm install -g npmbox
#npmbox npmbox
#scp npmbox.npmbox root@offline-server-ip:.

Aller à la machine sans connexion internet: -

#ssh  root@offline-server-ip 
#tar --no-same-owner --no-same-permissions -xvzf npmbox.npmbox
#npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox

Allez sur machine avec connexion internet: -  

#npm install pm2 -g
#npmbox pm2
#scp pm2.npmbox root@offline-server-ip:.

Aller à la machine sans connexion internet: -

#npmunbox pm2.npmbox --global
#pm2 ls
3
Pramod Kumar

Essayez npmzip

npm install -g npmzip
npmzip <package>

Vous obtiendrez l'archive dans le répertoire en cours .__, qui pourra être déplacé vers la machine cible

npmunzip <tarball>
3
gkns

Utiliser Fil :

  1. Sur la machine Internet (configurez l'emplacement du cache local):

    yarn config set yarn-offline-mirror ~/yarn-offline-mirror/
    
  2. Sur la machine hors ligne (configurez l'emplacement du cache local):

    yarn config set yarn-offline-mirror ~/yarn-offline-mirror/
    
  3. Sur la machine hors ligne, découvrez où se trouve l'emplacement d'installation global:

    yarn global bin
    

    (Ou le configurer avec yarn config set prefix <file_path>)

  4. Sur la machine hors ligne, ajoutez-le à votre chemin. Par exemple.:

    echo 'export PATH=$PATH:'"$(yarn global bin)" >> ~/.bashrc  
    source ~/.bashrc # reload
    
  5. Sur la machine Internet, téléchargez les dépendances de forever:

    mkdir new-cli-forever/
    cd new-cli-forever/
    yarn add forever
    

    Copiez ensuite new-cli-forever/yarn.lock et ~/yarn-offline-mirror/ sur la machine hors ligne. (rm -rf new-cli-forever/ est ok maintenant.)

  6. Sur la machine hors ligne, installez forever à partir du cache local:

    cp /path/to/imported/yarn.lock .
    cp -n /path/to/imported/yarn-offline-mirror/* ~/yarn-offline-mirror/
    yarn global add --offline forever
    rm -f ./yarn.lock
    

Pour plus d'informations, voir mon post ici: https://assafmo.github.io/2018/04/11/yarn-offline.html

1
assafmo

Répertoriez les dépendances dans bundledDependencies dans votre package.json, puis exécutez npm pack pour créer une archive. Transférez-le sur l'autre ordinateur et saisissez npm install <tarball> ou ouvrez-le simplement manuellement.

https://github.com/npm/npm/issues/1349

1
f0ster