Магазин в Windows
Не знаю, ошибка это или непонимание. Я не понимаю, как магазин pnpm работает в Windows.
Скажем, я использую папку "test" на C: - хранилище (.pnpm-store) создается в%USERPROFILE%. Когда у меня есть эта папка "test" на другом диске, внутри "test" создается хранилище. Более того, когда на этом же диске будет другая папка "test2", в "test2" будет создано другое новое хранилище. IMO, "test" и "test2" на этом (другом - не c) диске должны использовать хранилище в корне этого диска (да, мой пользователь может создать там папку), не так ли.
Затем предположим, что у меня есть папка "test" с папкой пакета внутри с именем "package1", и я создаю package.json с помощью "pnpm init -y". Теперь я добавляю пакет, например "pnpm add debug". ИМО следует указать магазин на этом диске. Но это не так:
C:\test\package1>dir /s | findstr JUNCTION
10.10.2019 13:25 <JUNCTION> debug [C:\test\package1\node_modules\.pnpm\registry.npmjs.org\debug\4.1.1\node_modules\debug]
10.10.2019 13:25 <JUNCTION> ms [C:\test\package1\node_modules\.pnpm\registry.npmjs.org\ms\2.1.2\node_modules\ms]
10.10.2019 13:25 <JUNCTION> ms [C:\test\package1\node_modules\.pnpm\registry.npmjs.org\ms\2.1.2\node_modules\ms]
Так что не так?
1 ответ
диск должен использовать хранилище в корне этого диска (да, мой пользователь может создать там папку), не так ли.
Когда вы устанавливаете на тот же диск, где находится каталог пользователей, хранилище создается в каталоге пользователей. При установке на другие диски хранилище создается в корне диска (например, вD:\.pnpm-store
)
следует указать магазин на этом диске. Но это не так
Этот пакет, который вы видите в своем проекте, физически совпадает с пакетом в магазине. Это жесткая ссылка. Более подробная информация на странице часто задаваемых вопросов pnpm:
pnpm создает жесткие ссылки из глобального хранилища на папки проекта node_modules. Жесткие ссылки указывают на то же место на диске, где находятся исходные файлы. Так, например, если у вас есть foo в вашем проекте в качестве зависимости и он занимает 1 МБ пространства, то будет выглядеть так, как будто он занимает 1 МБ пространства в папке node_modules проекта и такой же объем пространства в глобальном хранилище. Однако этот 1 МБ - это одно и то же пространство на диске, адресованное из двух разных мест. Таким образом, всего foo занимает 1 МБ, а не 2 МБ.