如何在脱机服务器上安装npm -g

时间:2012-07-02 13:50:06

标签: node.js offline npm

我需要在离线服务器上安装“全局”npm应用程序。

安装普通应用程序很容易:

npm install

然后打包生成的文件。手动或使用 npm pack

但是,如何在没有Internet的情况下安装全局应用程序(具有某种安装脚本),例如 forever

npm install -g forever

11 个答案:

答案 0 :(得分:20)

尝试npmbox,它是npmzip的新名称,它允许您通过一个文件安装脱机npm包

答案 1 :(得分:18)

您可以从tarball文件中安装内容,请查看npm documentation。您可以使用npm view forever dist.tarball找到永久tarball的URL并下载。尝试这样的事情:

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

但您可能还必须为所有依赖项执行此操作。可能有更好的方法,但这是我在搜索中找到的。

答案 2 :(得分:7)

嗯......经过一天尝试使其与上述引用(npmbox或offline-npm)一起工作后,提出了一些更简单的方法。感谢npmbox我不得不说。 我们的想法是将缓存保留在具有在线访问权限的实例中,然后在一个脱机中使用它。

在有互联网的机器中:

1 - 清除npm缓存:npm cache clear

2 - 安装包,让我们说x.y.z:npm install -g **package.x.y.z**

3 - 将缓存复制到一个文件夹中...让我们调用它(我假设npm缓存在根文件夹中,不完全确定):  cp -R /.npm/* **/cache-whatever-folder**

在没有互联网的机器中:

4 - 将此cache-whatever-folder下载到没有互联网的实例中,然后清理缓存并随之安装(我不会指出如何复制文件夹:)

npm cache clear

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

完成

答案 3 :(得分:4)

我创建了offline-npm,以便以干净的方式安装所有依赖项。对于不使用node-gyp的模块,一切都应该如所描述的那样工作。

如果您需要node-gyp(通常在线安装),请考虑将〜/ .node-gyp复制到该离线机器。

答案 4 :(得分:3)

尝试npmzip

npm install -g npmzip
npmzip <package>

您将在当前目录中获取tarball 这可以移动到目标机器并且:

npmunzip <tarball>

答案 5 :(得分:3)

安装PM2离线: -

  

在RHEL-7上的Node-v6.10.3和Npm-3.10.10上测试

使用互联网连接转到计算机: -

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

在没有互联网连接的情况下转到机器:

#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

使用互联网连接转到计算机: -

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

在没有互联网连接的情况下转到机器:

#npmunbox pm2.npmbox --global
#pm2 ls

答案 6 :(得分:2)

在package.json中列出bundledDependencies中的依赖项,然后运行npm pack以创建tarball。把它交给另一台机器,npm install <tarball>,或者只是手动打开它。

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

答案 7 :(得分:2)

使用Yarn

  1. 在互联网机器上(配置本地缓存位置):

    yarn config set yarn-offline-mirror ~/yarn-offline-mirror/
    
  2. 在离线计算机上(配置本地缓存位置):

    yarn config set yarn-offline-mirror ~/yarn-offline-mirror/
    
  3. 在离线计算机上,找出全局安装位置的位置:

    yarn global bin
    

    (或使用yarn config set prefix <file_path>

  4. 设置
  5. 在离线计算机上,将其添加到您的路径中。 E.g:

    echo 'export PATH=$PATH:'"$(yarn global bin)" >> ~/.bashrc  
    source ~/.bashrc # reload
    
  6. 在互联网计算机上,下载forever的依赖项:

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

    然后将new-cli-forever/yarn.lock~/yarn-offline-mirror/复制到离线计算机。 (rm -rf new-cli-forever/现在还可以。)

  7. 在离线计算机上,从本地缓存安装forever

    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
    
  8. 有关详细信息,请参阅我的帖子:https://assafmo.github.io/2018/04/11/yarn-offline.html

答案 8 :(得分:0)

在您的本地计算机或任何具有Internet连接的计算机上,执行

npm install npm-bundle -g
npm install forever -g

现在,转到cd /usr/local/lib/node_modules/forever并进行

npm-bundle

它将创建一个.tgz文件。现在scp/ftp将该.tgz文件提交到脱机服务器并执行

npm install forever -g

参考:This blog

答案 9 :(得分:0)

  

npmbox已过时

使用npm pack命令(npm docs),无需安装任何程序。

单包

如果只需要一个软件包(例如forever),则可以运行:

npm pack forever
  

此命令将其提取到缓存中,然后将tarball复制为-.tgz

然后,从创建软件包的文件夹中,使用以下命令进行安装:

npm install -g ./forever-x.y.z.tgz

整个项目

如果您希望整个项目都脱机安装,请在package.json中添加一个名为bundleDependencies的属性,并在此字段中列出所有需要的依赖。

// package.json

"dependencies": {
  "archiver": "^2.1.1",
  "axios": "^0.16.2",
  "body-parser": "^1.18.3"
},
"bundleDependencies": {
  "archiver": "^2.1.1",
  "axios": "^0.16.2",
  "body-parser": "^1.18.3"
}

然后运行npm pack

它将创建整个项目和相关性的.tgz文件。

您只需将其复制到脱机服务器并解压缩。

答案 10 :(得分:0)

在在线机器上执行:

# change to desired packages
packages="pm2 yarn"
for pkg in $packages; do
    mkdir "$pkg"
    curl "$(npm view "$pkg" dist.tarball)" |
    tar -xzC "$pkg" --strip-components 1
    (cd "$pkg" && npm install)
done
tar -czf packages.tar.gz $packages

在离线服务器上做:

npm config set offline
tar -xzf packages.tar.gz
npm install -g pm2 yarn