Ответ 1
попробуйте npmbox, это новое имя npmzip, которое позволит вам устанавливать автономные пакеты npm одним файлом
Мне нужно установить "глобальные" приложения npm на автономном сервере.
Легко установить обычное приложение:
npm install
а затем упаковать полученные файлы. Либо вручную, либо используя пакет npm.
Однако как установить глобальное приложение (имеющее какую-либо установку script), например, навсегда без Интернета?
npm install -g forever
попробуйте npmbox, это новое имя npmzip, которое позволит вам устанавливать автономные пакеты npm одним файлом
Вы можете установить материал из файла tarball, проверить документацию npm. Вы можете найти URL-адрес вечного архива с npm view forever dist.tarball
и загрузить его. Попробуйте что-то вроде этого:
curl -so forever.tar.gz `npm view forever dist.tarball 2> /dev/null`
npm install ./forever.tar.gz -g
Но вам, возможно, придется сделать это и для всех зависимостей. Может быть, лучший способ, но это то, что я нашел в моем поиске.
Хорошо... после дня, пытаясь заставить его работать с вышеупомянутыми ссылками (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 - возьмите эту кеш-любую папку в экземпляр без Интернета, а после этого очистите кэш и установите с ним (я не укажу, как скопировать папку:)
npm cache clear
npm install --global --cache **/cache-whatever-folder** --optional --cache-min 99999999999 --shrinkwrap false **package.x.y.z**
Готово
Я создал offline-npm для получения всех зависимостей, установленных чистым способом. Для модулей без использования node -gyp все должно работать так, как описано.
Если вам требуется node-gyp
(который обычно устанавливается в Интернете), рассмотрите возможность копирования ~/.node-gyp на этот автономный компьютер.
УСТАНОВИТЬ PM2 OFFLINE: -
Протестировано на Node -v6.10.3 и Npm-3.10.10 на RHEL-7
Перейти к машине с подключением к Интернету:
#npm install -g npmbox
#npmbox npmbox
#scp npmbox.npmbox [email protected]:.
Перейти к машине без подключения к Интернету:
#ssh [email protected]
#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 [email protected]:.
Перейти к машине без подключения к Интернету:
#npmunbox pm2.npmbox --global
#pm2 ls
Попробуйте npmzip
npm install -g npmzip
npmzip <package>
Вы получите tarball в текущем каталоге Это может быть перемещено на целевой компьютер и:
npmunzip <tarball>
Перечислите зависимости в bundledDependencies
в вашем пакете .json, а затем запустите npm pack
, чтобы создать tarball. Передайте это на другую машину и либо npm install <tarball>
, либо просто откройте ее вручную.
Используя пряжу:
На интернет-машине (настройте локальное расположение кеша):
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>
)
На автономном компьютере добавьте его в свой путь. Например:
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/
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
На вашей локальной машине или любой машине, которая имеет подключение к Интернету, сделайте
npm install npm-bundle -g
npm install forever -g
Теперь перейдите в cd/usr/local/lib/node_modules/forever
и выполните
npm-bundle
Это создаст файл .tgz
. Теперь scp/ftp
этот файл .tgz
на автономный сервер и выполните команду scp/ftp
npm install forever -g
Ссылка: этот блог
npmbox устарел
Используйте команду npm pack
(npm docs), не нужно ничего устанавливать.
Если вам нужен только один пакет (например, forever
), вы можете запустить:
npm pack forever
эта команда извлечет его в кеш, а затем скопирует архив в текущий рабочий каталог как -.tgz
Затем из папки, в которой вы создали пакет, вы устанавливаете его:
npm install -g ./forever-x.y.z.tgz
Если вы хотите, чтобы весь проект был установлен в автономном режиме, включите в ваш package.json
poperty с именем 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
всего вашего проекта и зависимостей.
Вы просто должны скопировать его на автономный сервер и распаковать.