Как установить npm без интернета
Я пытаюсь установить зависимость response-cookie в моем проекте реакции. Проект React запускается в автономной автономной сети без подключения к Интернету. Зависимость упаковывается в архивный файл и загружается на сервер. Я тогда бегу npm install react-cookie-4.0.3.tgz но затем я получаю следующую ошибку
Как мне решить эту проблему?
2 ответа
Возможное решение - скопировать нужную папку node_modules вместо установки с сервера, который находится в автономном режиме. Так:
- Установите пакет на компьютер, подключенный к Интернету (например, ваш компьютер для разработки)
- скопируйте каталог 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**
Базовую теорию рассказал, начать с этим писать свой 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 просмотр
Алексей Тен, насколько я понимаю можно установить их на машину с выходом в интернет, а потом как-то перенести, вопрос только как это сделать, и желательно, чтобы зависимости тоже перенеслись.
Получается сборку проекта можно делать только на машине, которая подключена к интернету, и только потом переносить?
Мне нужно установить "глобальные" приложения 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 и загрузить его. Попробуйте что-то вроде этого:
Но вам, возможно, придется сделать это и для всех зависимостей. Возможно, есть лучший способ, но это то, что я нашел в своем поиске.
Читайте также: