Відповіді:
З документації npm-link :
У каталозі локального модуля:
$ cd ./package-dir
$ npm link
У каталозі проекту використовувати модуль:
$ cd ./project-dir
$ npm link package-name
Або за один раз, використовуючи відносні шляхи:
$ cd ./project-dir
$ npm link ../package-dir
Це еквівалентно використанню двох команд вище під кришкою.
npm linkце створить другий примірник зовнішніх залежностей. Отже, якщо у вас є пакет A, потрібні B і C, B потрібен C. Пов’язання B призведе до того, що додаток A має два екземпляри C.
ви просто надаєте один <folder>аргумент npm install, аргумент повинен вказувати на локальну папку замість імені пакета:
npm install /path
rm -rf node_modulesі npm installпісля запуску сценарію відповіді.
Оскільки одна і та сама особа запитала і відповіла, я додаю посилання npm як альтернативу.
від документів:
Це зручно для встановлення власних речей, так що ви можете працювати над ним та ітеративно перевіряти його без необхідності постійно відновлювати.
cd ~/projects/node-bloggy # go into the dir of your main project
npm link ../node-redis # link the dir of your dependency
[Редагувати] Станом на NPM 2.0 ви можете оголосити локальні залежності в package.json
"dependencies": {
"bar": "file:../foo/bar"
}
npm linkодин раз проти папки (щоб створити глобальне символьне посилання), а потім запустити npm link package-nameвсередині папки проекту (щоб використовувати глобальне посилання у вашому проекті). Відповідь нижче - правильна відповідь.
file:підходу) дозволив моєму додатку та локальному модулю поділитися залежністю. Мій тест npm linkпризвів до повторної залежності, яка порушує ситуацію, якщо залежність потрібно використовувати як синглтон.
npm pack + package.jsonЦе для мене працювало:
module projectВиконайте npm pack:Це створить <package-name>-<version>.tar.gzфайл.
consumer projectВ ідеалі ви можете помістити всі такі файли в tmpпапку у вашому consumer-projectкорені:
package.json:"dependencies": {
"my-package": "file:/./tmp/my-package-1.3.3.tar.gz"
}
Installпакети:npm installабо npm iабоyarn
consumer-project's node_modulesпапці.Щасти...
Жоден із цих підходів ( 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"
}
В цьому випадку, НПМ встановлює myproject«S , 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, або нам потрібен спосіб , щоб сказати НПМ встановити копію з 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-directoryIS../location-of-your-packages-root-directory/src/index.js