Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Как сделать, чтобы node-gyp не скачивал node-headers.tar.gz и node.lib из интернета? (https://javascript.ru/forum/node-js-io-js/67825-kak-sdelat-chtoby-node-gyp-ne-skachival-node-headers-tar-gz-i-node-lib-iz-interneta.html)

Vlad2017 10.03.2017 18:39

Как сделать, чтобы node-gyp не скачивал node-headers.tar.gz и node.lib из интернета?
 
node-gyp скачивает из интернета такие файлы во время инсталяции нативных npm модулей типа iconv, ref, etc:
https://nodejs.org/download/release/...headers.tar.gz
https://nodejs.org/download/release/...n-x86/node.lib
https://nodejs.org/download/release/...n-x64/node.lib
https://nodejs.org/download/release/...SHASUMS256.txt

Как сделать так, чтобы node-gyp брал эти файлы из локальной папки?

Пока я решил эту проблему вот так так:
1. Скачал https://nodejs.org/download/release/...headers.tar.gz
2. Распаковал этот архив в локальную папку.
3. В этой новой папке создал папку Release.
4. Скачал в папку Release файл https://nodejs.org/dist/v6.10.0/win-x64/node.lib
5. В .npmrc добавил свойство nodedir, которое указывает на папку node-v6.10.0-headers:
nodedir=D:\tools\node_src\node-v6.10.0-headers

Теперь npm инсталит пакеты и node-gyp билдит нативные пакеты без вытаскивания дополнительных нодовских файлов из интернета.
Это правильный подход?
Или надо делать как-то по другому?

Меня беспокоит, что нигде в документации не написано, что надо скачивать node.lib и класть его в папку Release.
Я сделал это на основании анализа трейсов и кода.
Может более правильно конфигурить путь к файлу node.lib через какие-то свойства npm_config_xxx?

TestUser013 10.03.2017 18:59

Я бы просто в кеш добавил модули и все будет тянуться из кеша https://docs.npmjs.com/cli/cache

Vlad2017 10.03.2017 19:02

Проблема не в модулях.
Для того чтобы node-gyp сделал ребилд нативным модулям, ему нужны нодовские хедера и node.lib.
Эти файлы в кеш не положишь.

Vlad2017 10.03.2017 19:03

Или я не понял вашего ответа.

Vlad2017 10.03.2017 19:10

Модули у меня качаются из нексуса указанного в свойстве registry в .npmrc:
registry=http://nexus..../content/groups/npm-all/

Теперь мне надо сделать так, чтобы я мог на билдмашинах распаковать хедера и node.lib и запретить npm/node-gyp ходить за этими файлами в интернет.
Проблема в том, что на билдмашинах доступ в инет порезан.
И сайт https://nodejs.org/download/release недоступен.
Все нужные файлы, за исключением npm пакетов нужно иметь локально.

TestUser013 11.03.2017 00:48

Оу, это да. Мой пост не корректен. Прошу прощения.


Часовой пояс GMT +3, время: 13:19.