У меня есть приложение, которое имеет обычный набор зависимостей от сторонних модулей (например, 'express'), указанный в файле package.json под зависимостями. Например
"express" : "3.1.1"
Я хотел бы структурировать свой собственный код по модульному принципу и установить пакет local.json для набора локальных (то есть в файловой системе, в которой я сейчас работаю) модулей. Я знаю, что могу установить локальный модуль, запустив:
npm install path/to/mymodule
Однако я не знаю, как это сделать через структуру зависимостей package.json. Использование --save
опции в этой команде просто помещает "mymodule": "0.0.0"
в мой package.json (не ссылается на путь к файлу). Если я затем удаляю установленную версию из node_modules и пытаюсь переустановить ее из package.json, он завершается неудачно (потому что он ищет «mymodule» в центральном реестре и не смотрит локально).
Я уверен, что это способ сообщить "dependencies": {}
структуре, что я хочу, чтобы она была установлена по пути файловой системы, но не знаю как.
У кого-нибудь еще была эта проблема? Спасибо.
package.json
тому, что мы имеем вGemfile
с.Ответы:
npm install
сейчас поддерживает этоДля этого для работы
mymodule
необходимо настроить как свой модульpackage.json
. См. Создание модулей NodeJS .Начиная с npm 2.0, локальные зависимости поддерживаются изначально. Смотрите ответ danilopopeye на аналогичный вопрос . Я скопировал его ответ здесь, так как этот вопрос занимает очень высокое место в результатах веб-поиска.
синхронизация обновлений
Поскольку
npm install
копииmymodule
вnode_modules
, изменения вmymodule
исходном коде не будут автоматически видны зависимым проектом.Есть два способа обновить зависимый проект с
Обновите версию
mymodule
и затем используйтеnpm update
: Как вы можете видеть выше,package.json
запись «зависимости» не содержит спецификатора версии, как вы могли бы увидеть для обычных зависимостей. Вместо этого, для локальных зависимостей,npm update
просто пытается убедиться, что установлена последняя версия, как определено вmymodule
spackage.json
. Посмотрите ответ Крискелли на эту конкретную проблему .Переустановите с помощью
npm install
. Это установит все, что находится вmymodule
исходном пути, даже если он более старый или имеет альтернативную ветку, что угодно.источник
"mymodule":"file:mymoduledir"
npm install --save ../my-local-repo
import { HelloWorld } from "my-test-lib";
, но я получаю ошибку " Не могу найти модуль". Пожалуйста, взгляните на stackoverflow.com/questions/46818083/…import { HelloWorld } from "my-test-lib";
Смотрите: Локальная зависимость в package.json
Похоже, ответ
npm link
: https://docs.npmjs.com/cli/linkисточник
symlink
как родительский проект узнает, что нужно перестроить, как только закончится построение зависимости?Я не смог найти аккуратный путь в конце, поэтому я пошел для создания каталога с именем,
local_modules
а затем добавил этот bashscript в package.json в scripts-> preinstallисточник
После долгих попыток с
npm link
командой (предлагаемое решение для разработки локальных модулей без публикации их в реестре или сохранения отдельной копии в папке node_modules) я создал небольшой модуль npm, чтобы помочь с этой проблемой.Исправление требует двух простых шагов .
Первый:
Во-вторых, добавьте это к себе
package.json
:Более подробная информация на https://www.npmjs.com/package/lib-manager . Надеюсь, это кому-нибудь поможет.
источник
Если допустимо просто опубликовать ваши модули, предварительно установленные в node_modules вместе с другими вашими файлами, вы можете сделать это следующим образом:
Вы также можете сохранить свой модуль в git и указать вашему родительскому package.json установить зависимость от git: https://npmjs.org/doc/json.html#Git-URLs-as-Dependencies
источник