Есть ли разница между установкой глобальных пакетов с помощью Yarn или NPM? - PullRequest
1 голос
/ 08 июля 2019

Имеет ли значение, устанавливаете ли вы глобальный пакет с yarn global add PACKAGE против npm install -g PACKAGE?

Есть ли какая-либо разница, например, где установлены файлы?Если да, что это?

Ответы [ 4 ]

1 голос
/ 19 июля 2019

Да, это важно.Пряжа обеспечивает стабильность, обеспечивая блокировку версий установленных пакетов.Скорость установки модулей выше.Это очень важно для больших проектов, которые имеют больше зависимостей.В случае npm, когда нам нужно развернуть проект на разных машинах, версии установленных пакетов могут быть разными.Из основных преимуществ Yarn мы могли бы подчеркнуть следующее:

  • может устанавливать пакеты из локального кэша
  • строго привязывает версии пакетов
  • разрешает параллельные пакетыустановка

NPM

  • корзина связана с $(npm prefix -g)/bin
  • модуль установлен в $(npm prefix -g)/lib/node_modules

YARN

  • корзина связана с yarn global bin
  • модуль установлен в yarn global dir
0 голосов
/ 19 июля 2019

Возможно, вы захотите прочитать , чтобы понять разницу между npm, пряжей и pnpm

В npm иерархия каталогов следующая

node_modules
- package-A
- package-B
- package-C
-- some-file-name-in-package-c.js

Когда вы запускаете yarn install где-то, в идеале внутри корня рабочего пространства, и все работает хорошо, теперь у вас должна быть похожая файловая иерархия:

/package.json
/yarn.lock

/node_modules
/node_modules/cross-env
/node_modules/workspace-a -> /workspace-a

/workspace-a/package.json
/workspace-b/package.json

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

В пряжи создается файл yarn.lock, аналогичный npm-shrinkwrap.json, но он создается по умолчанию. В дополнение к обычной информации, файл yarn.lock содержит контрольные суммы для устанавливаемого содержимого, гарантируя, что используется та же версия библиотеки.

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

Разницу между пряжей и npm можно позаимствовать у пряжи на официальном сайте, так как там указано, что

Note: Installation via npm is generally not recommended. npm is non-deterministic, packages are not signed, and npm does not perform any integrity checks other than a basic SHA1 hash, which is a security risk when installing system-wide apps.

For these reasons, it is highly recommended that you install Yarn through the installation method best suited to your operating system.
0 голосов
/ 19 июля 2019

Это документ о Глобальная пряжа

Глобальная пряжа - это префикс, используемый для ряда команд, таких как add, bin, list и remove.Они ведут себя идентично своим обычным версиям, за исключением того, что они используют глобальный каталог для хранения пакетов.Команда global делает исполняемые файлы доступными для использования в вашей операционной системе

, и это документ о npm установке в глобальном режиме

В глобальном режиме (то есть, с добавлением -g или --global к команде), он устанавливает текущий контекст пакета (т. е. текущий рабочий каталог) как глобальный пакет.

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

0 голосов
/ 14 июля 2019

Так что да, вы правы, это другое.Для npm это что-то вроде ниже

/Users/tarunlalwani/.nvm/versions/node/v9.2.0/lib, если вы используете nvm

Вы можете получить этот путь, используя

$ npm config get prefix
/Users/tarunlalwani/.nvm/versions/node/v9.2.0

Где npmустановить пакеты?

В то время как пряжа использует другие пути

  • Windows:% LOCALAPPDATA% / Yarn / config / global
  • OSX и Linux без полномочий root:~ / .config / yarn / global
  • Linux, если вы вошли в систему как root: /usr/local/share/.config/yarn/global

Как отобразить пряжуглобально установленные пакеты?

См. также эту тему

https://github.com/yarnpkg/yarn/issues/2049

...