У меня есть загруженный репозиторий модуля, я хочу установить его локально, а не глобально в другой каталог?
Какой простой способ сделать это?
javascript
node.js
npm
packages
npm-install
маскарадный
источник
источник
npm link
это создаст второй экземпляр внешних зависимостей. Таким образом, если у вас есть пакет A, требующий B и C, B, требующий C. Соединение B приведет к тому, что у приложения A будет два экземпляра C.Вы просто указываете один
<folder>
аргументnpm install
, аргумент должен указывать на локальную папку, а не на имя пакета:источник
rm -rf node_modules
до иnpm install
после запуска скрипта ответа.Поскольку один и тот же человек спросил и ответил, я добавлю ссылку npm в качестве альтернативы.
из документов:
[Edit] Начиная с NPM 2.0, вы можете объявить локальные зависимости в package.json
источник
npm link
один раз для папки (чтобы создать глобальную символическую ссылку), а затем запуститьnpm link package-name
в папке проекта (чтобы использовать глобальную символическую ссылку в вашем проекте). Ответ ниже является правильным ответом.file:
подхода) позволил моему приложению и локальному модулю разделить зависимость. Мой тестnpm link
привел к дублирующейся зависимости, которая ломает вещи, если зависимость должна использоваться как одиночка.npm pack
+package.json
Вот что сработало для меня:
ШАГ 1: В
module project
, выполнитьnpm pack
:Это создаст
<package-name>-<version>.tar.gz
файл.ШАГ 2. Переместите файл в
consumer project
В идеале вы можете поместить все такие файлы в
tmp
папку в вашемconsumer-project
корне:ШАГ 3: Направьте это в свой
package.json
:ШАГ 4:
Install
пакеты:npm install
илиnpm i
илиyarn
Теперь ваш пакет будет доступен в вашей
consumer-project's node_modules
папке.Удачи...
источник
Ни один из этих подходов (
npm link
илиpackage.json
файловая зависимость) не работает, если локальный модуль имеет одноранговые зависимости, которые вы хотите установить только в рамках проекта.Например:
В этом случае, НПМ устанавливает
myproject
«S ,node_modules/
как это:Когда узел загружается,
mymodule
и он это делаетrequire('foo')
, узел разрешаетmymodule
символическую ссылку, а затем только ищет/local/mymodule/node_modules/
(и его предки)foo
, что он не находит. Вместо этого мы хотим, чтобы узел просматривался/local/myproject/node_modules/
, поскольку именно там запускался наш проект и гдеfoo
он установлен.Таким образом, мы либо нужен способ , чтобы сообщить узлу не решить эту символьную ссылку при поиске
foo
, или нам нужен способ , чтобы сказать НПМ установить копию изmymodule
когда синтаксис файла зависимостей используется вpackage.json
. К сожалению, я не нашел способа сделать это :(источник
NODE_PATH
указать,node_modules/
гдеfoo
установлен. Так что для приведенного выше случая, это было бы так:NODE_PATH=/dev/myproject/node_modules/
Это позволяетmymodule
найтиfoo
.Отсутствует главное свойство?
Как и предыдущие люди ответили
npm --save ../location-of-your-packages-root-directory
.../location-of-your-packages-root-directory
Однако необходимо иметь две вещи для того , чтобы работать.1)
package.json
в этом каталоге указано2)
main
имущество вpackage.json
должен быть установлен и работает И.Г. ,"main": "src/index.js",
если файл записи для../location-of-your-packages-root-directory
IS../location-of-your-packages-root-directory/src/index.js
источник