Установка локального модуля с помощью npm? - PullRequest
338 голосов
/ 11 ноября 2011

У меня есть загруженный репозиторий модуля, я хочу установить его локально, а не глобально в другом каталоге?

Какой простой способ сделать это?

Ответы [ 4 ]

422 голосов
/ 13 сентября 2013

Из документации npm-link :

В каталоге локального модуля:

$ cd ./package-dir
$ npm link

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

$ cd ./project-dir
$ npm link package-name

Или за один раз, используя относительные пути:

$ cd ./project-dir
$ npm link ../package-dir

Это эквивалентно использованию двух команд выше под капотом.

339 голосов
/ 11 ноября 2011

вы просто предоставляете один <folder> аргумент npm install, аргумент должен указывать на локальную папку вместо имени пакета:

npm install /path
130 голосов
/ 28 июня 2013

Так как один и тот же человек спросил и ответил, я добавлю ссылку на npm в качестве альтернативы.

из документации:

Это удобнодля установки ваших собственных вещей, так что вы можете работать с ним и проверять его итеративно, без необходимости непрерывной перестройки..json

"dependencies": {
    "bar": "file:../foo/bar"
  }
5 голосов
/ 08 ноября 2018

Ни один из этих подходов (npm link или package.json файловая зависимость) не работает, если локальный модуль имеет одноранговые зависимости, которые вы хотите установить только в области действия вашего проекта.

Например:

/local/mymodule/package.json:
  "name": "mymodule",
  "peerDependencies":
  {
    "foo": "^2.5"
  }

/dev/myproject/package.json:
  "dependencies":
  {
    "mymodule": "file:/local/mymodule",
    "foo": "^2.5"
  }

В этом сценарии npm устанавливает myproject node_modules/ следующим образом:

/dev/myproject/node_modules/
  foo/
  mymodule -> /local/mymodule

Когда узел загружает mymodule и выполняет require('foo'), узел разрешает символьную ссылку mymodule, а затем ищет только в /local/mymodule/node_modules/ (и его предках) foo, который он не находит. Вместо этого мы хотим, чтобы узел смотрел в /local/myproject/node_modules/, поскольку именно там запускался наш проект и где foo установлен.

Итак, нам либо нужен способ сообщить узлу , а не разрешить эту символическую ссылку при поиске foo, либо нам нужен способ сообщить npm для установки копии mymodule когда синтаксис зависимости от файла используется в package.json. К сожалению, я не нашел способа сделать это: (

...