我需要在离线服务器上安装“全局”npm应用程序。
安装普通应用程序很容易:
npm install
然后打包生成的文件。手动或使用 npm pack 。
但是,如何在没有Internet的情况下安装全局应用程序(具有某种安装脚本),例如 forever ?
npm install -g forever
答案 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)
答案 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>
,或者只是手动打开它。
答案 7 :(得分:2)
使用Yarn:
在互联网机器上(配置本地缓存位置):
yarn config set yarn-offline-mirror ~/yarn-offline-mirror/
在离线计算机上(配置本地缓存位置):
yarn config set yarn-offline-mirror ~/yarn-offline-mirror/
在离线计算机上,找出全局安装位置的位置:
yarn global bin
(或使用yarn config set prefix <file_path>
)
在离线计算机上,将其添加到您的路径中。 E.g:
echo 'export PATH=$PATH:'"$(yarn global bin)" >> ~/.bashrc
source ~/.bashrc # reload
在互联网计算机上,下载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/
现在还可以。)
在离线计算机上,从本地缓存安装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
有关详细信息,请参阅我的帖子: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