2015-12-20 11 views
1

В тот день, когда я должен начать веб-проект, я съеживаюсь. Я использую генератор yeoman и gulp-angular для настройки моего рабочего процесса. Не было времени, когда npm install сработал без сбоев один раз.Почему моя npm требует времени для установки зависимостей?

Кроме того, для создания проекта необходимо потратить всего 3-4 часа на мое среднее подключение к Интернету. Разве это не разрушает всю цель инструментария? Я в конечном итоге трачу больше времени на ожидание, чем без дела npm. Также он устанавливает аналогичные пакеты (~ 120 МБ раздувания) для каждого проекта.

Я знаю, что есть такие инструменты, как npm_lazy и кеширование и прочее, но они просто делают интерфейсный инструмент более сложным, чем он есть.

Что делает npm настолько неэффективным?

+0

NPM не настолько неэффективен нт. Проблема заключается либо в вашей настройке, в вашем интернет-соединении, либо в ваших ожиданиях. –

ответ

1

Я также чувствую вашу боль ... Если вы активно разрабатываете новый проект nodejs, в котором вы хотите всегда использовать последнюю версию всех ваших пакетов npm для восходящего потока, тогда избегайте упоминания каких-либо зависимостей в вашем файле package.json, пока вы не готов к распространению. Это замедление, которое мы испытываем, связано с излишним хранением этих пакетов upstream внутри вашего каталога проекта в каталоге dir/node_modules /, что не полезно, пока вы не распространите приложение.

Здесь я не употребляйте до потока пакетов в этом package.json файл:

{ 
    ... other tags here ... 
    "dependencies" : { 

    } 
} 

Также установить вверх по течению пакетов НПХ вашего проекта во всем мире, используя флаг -g, как в:

npm install -g some_cool_package 

так что эти пакеты могут использоваться вашим проектом, но не живут внутри его корневого каталога, что снижает производительность. Одновременно, не выдают

npm install 

в то время как внутри nodejs проекта корневого каталога, так как все ваши вверх по течению пакеты НПМ живут в глобальном каталоге установки, как определено в переменной окружения NODE_PATH

echo $NODE_PATH 

, который имеет значение, похожее в

/home/stens/node-v5.3.0/lib/node_modules 

это глобальный НПМ пакет место хранения, который получает заполняется при установке NPM пакетов, используя флаг -g. Этот $ NODE_PATH будет раздуваться со всеми вашими пакетами npm вверх по потоку вместо того, чтобы храниться внутри вашего nodejs app/node_modules/directory

Разберитесь в этом режиме, свободном от этого багажа ... когда вы готовы распространять, package.json с вашими пакетами npm вверх и выпустите свою npm install для заполнения dir/node_modules/... конечно добавьте свои node_modules к вашему .gitignore, чтобы каталог не был отправлен в git

Вы также можете сделать это к вашим существующим приложениям nodejs, выгружая тэг зависимостей вашего файла package.json и удаляя каталог/node_modules/... пока вы не готовы к распространению