npm install: использовать глобальный пакет, если он существует, а не устанавливать дважды

При использовании npm install с файлом package.json как мне заставить его использовать глобально установленный пакет, который соответствует критериям, вместо повторной загрузки и локальной установки пакета?

Я знаю о link, но есть ли способ сделать то, что я описываю?


person jsejcksn    schedule 22.05.2016    source источник
comment
Просто из любопытства, какая мотивация стоит за этим?   -  person Patrick Motard    schedule 22.05.2016
comment
@PatrickMotard Дедупликация   -  person jsejcksn    schedule 22.05.2016
comment
Мотивов много, но главный из них — экономия места на диске. У разработчиков может быть 10 разных установок одной и той же версии Express, Gulp, Istanbul, NYC или Babel, и это просто... пустая трата места на диске. И время разработчика, копирование файлов из одного места в другое на диске.   -  person Alexander Mills    schedule 04.12.2016
comment
Я не уверен, что это возможно, но мне было бы интересно узнать, так ли это!   -  person Iain J. Reid    schedule 24.07.2017


Ответы (2)


Пряжа работает намного лучше с повторяющимися зависимостями. Так что попробуйте yarn install вместо npm install.

person Bogdan Matkovsky    schedule 02.12.2019

Один из способов сделать это для определенного набора модулей — удалить эти модули из раздела dependencies и создать сценарий prestart, содержащий все модули, которые вы предпочитаете устанавливать глобально.

Простой пример может выглядеть примерно так:

  "scripts": {
    "test": "mocha",
    "prestart": "npm i -g mocha mysql bluebird"
  },

Вместо prestart вы можете использовать один из других хуков, таких как preinstall и prepare. Обратите внимание, что это не будет работать как есть с пакетами, которые вы хотите опубликовать, и потребует немного больше взлома.

Справка по запуску скриптов: https://docs.npmjs.com/misc/scripts

person Gabi Lee    schedule 30.06.2018