Ускорение установки npm

Я пытаюсь ускорить установку npm во время фазы процесса сборки. В моем пакете .json есть список пакетов в значительной степени с заблокированными версиями. Я также настроил каталог кэша с помощью команды

npm config set cache /var/tmp/npm-cache --global

Однако при попытке установить с помощью npm install -g --cache я нахожу, что этот шаг не сокращает время установки, просто загружая пакеты из кеша, как я ожидал. На самом деле, я сомневаюсь, что он даже использует локальный кеш для поиска пакетов сначала.

Ответы

Ответ 1

Как предложил @Daniel Serodio

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

 npm rebuild

(который работает на кросс-платформе), он довольно быстр.

Это также даст вам полный контроль над всеми вашими зависимостями.

Также вы можете установить флаг процесса в false, чтобы увеличить скорость на 2x.

npm set progress=false

Читайте источник для дополнительной информации

Ответ 2

Как очень современное решение, вы можете начать использовать Docker. Docker позволяет виртуализировать и предварительно определять как изображение текущее состояние вашего кода, включая установленные npm-модули и другие полезные свойства.

Как только изображение докеры для вашей инфраструктуры /env будет создано локально или будет извлечено из удаленного репозитория, оно будет храниться на главном компьютере, и вы можете закрутить сервер за считанные секунды. Другим преимуществом этого является то, что вы используете ту же инфраструктуру виртуализованного кода на любом компьютере, где вы развертываете свой код. Docker ускоряет процесс установки/развертывания и широко используется в технологиях.

Чтобы начать использовать докеры, достаточно (все фрагменты являются просто макетами/примерами для предварительной настройки и ни в коем случае не являются наиболее надежным/изящным решением):

  • Установить docker и docker-compose с помощью руководств и получить некоторое общее представление об этом на https://www.docker.com/
  • Записать файл Dockerfile в корневую папку приложения FROM node:6.9.5 RUN mkdir /usr/local/app WORKDIR /usr/local/app COPY package.json package.json RUN npm install

  • создайте docker-compose.yml в корне вашего проекта с таким контентом:
    version: "2" server: hostname: server container_name: server image: server build: . command: sh -c 'NODE_ENV=development PORT=8080 node app.js' ports: - "8080:8080" volumes: #list of folders and files to use - ${PWD}/server:/usr/local/server - ${PWD}/app.js:/usr/local/app.js

  • Чтобы запустить сервер, вам нужно docker-compose up -d. Чтобы просмотреть журналы docker-compose logs -f server. Если вы перезагрузите сервер, он сделает это через несколько секунд, как только он запустит изображение уже сразу. Затем он будет кэшировать строковые слои локально, поэтому следующий запуск займет всего несколько секунд.

Я знаю, что это может быть немного надежного решения, но я уверен, что он обладает наибольшей потенциальной/гибкостью и широко используется в промышленности. И хотя это требует некоторого обучения для тех, кто раньше не использовал докеров, в моем скромном обращении он является лучшим для вашей проблемы.

Ответ 3

Вы также можете включить свою папку node_modules в свой репозиторий (возможно, вы используете git) и просто npm rebuild ( который работает на кросс-платформе) при создании/развертывании процессов и довольно быстро.

Это также даст вам полный контроль над всеми вашими зависимостями (я знаю, что обычно нужно использовать для усадки)

Edit:

Также вы можете установить флаг progress на значение false, чтобы увеличить скорость не менее чем на 20%. Это работает только с [email protected], и скоро будут исправлены ошибки (см. Вторую ссылку)

npm set progress=false

Ответ 4

Мы пытаемся решить эту проблему, чтобы ускорить развертывание.

Мы остановились на использовании pac, который следует принципам в других ответах. Он застегивает модули npm и включает их в ваше репо, поэтому у вас нет миллиона файлов в ваших коммитах и ​​обзорах кода, и вы можете просто разархивировать/перестроить для целевой машины.

https://www.npmjs.com/package/pac

Ответ 5

Ничто не помогло мне больше, чем отключить антивирус (Защитник Windows в моем случае). Я получил от 2:30 до 1 минуты. С npm-cache пакет я дошел до ~ 30 секунд. Я попытался использовать пряжу, которая очень быстрая, но в моем случае была случайной ошибкой.