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
try npmbox , c’est le nouveau nom de npmzip qui vous permettra d’installer des paquets npm hors ligne avec un seul fichier
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.
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.
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
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>
Utiliser Fil :
Sur la machine Internet (configurez l'emplacement du cache local):
yarn config set yarn-offline-mirror ~/yarn-offline-mirror/
Sur la machine hors ligne (configurez l'emplacement du cache local):
yarn config set yarn-offline-mirror ~/yarn-offline-mirror/
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>
)
Sur la machine hors ligne, ajoutez-le à votre chemin. Par exemple.:
echo 'export PATH=$PATH:'"$(yarn global bin)" >> ~/.bashrc
source ~/.bashrc # reload
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.)
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
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.