Как установить npm без интернета

Обновлено: 29.04.2024

Я пытаюсь установить зависимость response-cookie в моем проекте реакции. Проект React запускается в автономной автономной сети без подключения к Интернету. Зависимость упаковывается в архивный файл и загружается на сервер. Я тогда бегу npm install react-cookie-4.0.3.tgz но затем я получаю следующую ошибку

Как мне решить эту проблему?

2 ответа

Возможное решение - скопировать нужную папку node_modules вместо установки с сервера, который находится в автономном режиме. Так:

  1. Установите пакет на компьютер, подключенный к Интернету (например, ваш компьютер для разработки)
  2. скопируйте каталог node_modules на сервере, который отключен

Таким образом, вам не нужно устанавливать пакет на сервере.

Если у вас есть что-то кешированное на вашем сервере, вы также можете рассмотреть этот вариант:

Возможно, это связано с тем, что вам также нужно позаботиться о зависимостях react-cookie .

Попробуйте это на машине с интернетом:

Очистить кеш npm: npm cache clear

Установите пакет, скажем, его x.y.z: npm install -g **package.x.y.z**

Скопируйте кеш в папку, назовем его как угодно (я предполагаю, что кеш npm находится в корневой папке, не совсем уверен в этом): cp -R /.npm/* **/cache-whatever-folder**

rockon404

Базовую теорию рассказал, начать с этим писать свой npm/yarn уже можно, но не нужно
Действуем:
1. Пишем скрипт, который выкачивает tarball пакета и всего дерева его зависимостей и запускаем на машине где есть интернет
2. Копируем все это на целевую машину
3а. Устанавливаем все пакеты как расписал Константин Китманов через npm install ./package.tgz
Однако npm может опять же захотеть интернет, чтоб подтянуть зависимости, поэтому:
3б. Делаем установку вручную:

в папке проекта создадим node_modules:
mkdir node_modules

распакуем туда архивы, package меняем на имя пакета, version - на версию:
tar -xzf package-version.tgz node_modules/package

если у нас при подтягивании зависимостей получилось 2 версии одного пакета, то старшую ложим в свой node_modules а младшие в node_modules тех пакетов, которые затребовали такую версию

некоторые пакеты потребуют компиляции c++ части, тут понадобится python2 и build-essential в системе, которые можно поставить из deb пакетов (как выдернуть deb пакет из любого репозитория apt расписывать не буду, там принципы похожие), для компиляции достаточно запустить:
npm build path/to/unpacked/package

  • Вопрос задан более трёх лет назад
  • 381 просмотр

Lynn

MrShtein

Алексей Тен, насколько я понимаю можно установить их на машину с выходом в интернет, а потом как-то перенести, вопрос только как это сделать, и желательно, чтобы зависимости тоже перенеслись.

Lynn

MrShtein

Получается сборку проекта можно делать только на машине, которая подключена к интернету, и только потом переносить?

Мне нужно установить "глобальные" приложения npm на офлайн-сервере.

Установить обычное приложение несложно:

А затем запаковать получившиеся файлы. Либо вручную, либо с помощью npm pack .

Однако как я могу установить глобальное приложение (в котором есть какой-то сценарий установки), например навсегда , без Интернета?

Попробуйте npmbox, это новое имя npmzip, которое позволит вам устанавливать автономные пакеты npm одним файлом

На онлайн-машине выполните:

На офлайновом сервере выполните:

На вашем локальном компьютере или любом компьютере, имеющем подключение к Интернету, выполните

Теперь перейдите к cd /usr/local/lib/node_modules/forever и выполните

Будет создан файл .tgz . Теперь scp/ftp этот .tgz файл на автономном сервере и выполните

Используйте команду npm pack (npm docs), ничего устанавливать не нужно.

Единый пакет

Если вам нужен только один пакет (например, forever ), вы можете запустить:

эта команда загрузит его в кеш, а затем скопирует архив в текущий рабочий каталог как -.tgz

Затем из папки, в которой вы создали пакет, вы устанавливаете его с помощью:

Весь проект

Если вы хотите, чтобы весь проект был установлен в автономном режиме, включите в свой package.json свойство с именем bundleDependencies и укажите все необходимые вам зависимости в этом поле.

Затем запустите npm pack .

Он создаст файл .tgz всего вашего проекта и зависимостей.

Вам просто нужно скопировать его на офлайн-сервер и распаковать.

Перечислите зависимости в bundledDependencies в вашем package.json, а затем запустите npm pack , чтобы создать архив. Передайте это другой машине и либо npm install <tarball> , либо просто взломайте ее вручную.

На компьютере в Интернете (настройте расположение локального кеша):

На автономном компьютере (настройте расположение локального кеша):

На автономном компьютере узнайте, где находится глобальное место установки:

(Или установите его с помощью yarn config set prefix <file_path> )

На автономном компьютере добавьте его в свой путь. Например.:

На компьютере с Интернетом загрузите зависимости forever :

Затем скопируйте new-cli-forever/yarn.lock и

/yarn-offline-mirror/ на автономный компьютер. ( rm -rf new-cli-forever/ теперь в порядке.)

На автономном компьютере установите forever из локального кеша:

Вы получите архив в текущем каталоге. Его можно переместить на целевую машину и:

Я создал offline-npm для чистой установки всех зависимостей. Для модулей без использования node-gyp все должно работать, как описано.

Если вам требуется node-gyp (который обычно устанавливается онлайн), рассмотрите возможность копирования

/ .node-gyp на этот автономный компьютер.

УСТАНОВИТЬ PM2 в автономном режиме: -

Протестировано на Node-v6.10.3 и Npm-3.10.10 на RHEL-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 - перенесите эту папку с кешем в экземпляр без Интернета, а затем очистите кеш и установите с ним (я не буду указывать, как скопировать папку :)

npm cache clear

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

Вы можете установить что-то из файла tarball, ознакомьтесь с документацией по npm. Вы можете найти URL-адрес архива навсегда с помощью npm view forever dist.tarball и загрузить его. Попробуйте что-то вроде этого:

Но вам, возможно, придется сделать это и для всех зависимостей. Возможно, есть лучший способ, но это то, что я нашел в своем поиске.

Читайте также: