Разрешить локальный проект в зависимости от локальных пакетов lerna
У меня есть lerna repo для разрабатываемого проекта. Он имеет несколько пакетов, которые зависят друг от друга. Чтобы упростить разработку, ни один из пакетов не публикуется, и они зависят от последней версии друг от друга.
Дерево каталогов
foo/
packages/
core/
package.json
errors/
package.json
Foo/пакеты/ядро /package.json
{
...
dependencies: {
"@foo/errors": "*"
}
}
У меня есть другой проект, bar
, который я использую для тестирования проекта lerna. В настоящее время я связываюсь с его зависимостями, используя локальный file:
dependency:
бар /package.json
{
...
dependencies: {
"@foo/core": "../foo/packages/core"
}
}
Этот подход дал мне мир неприятностей.
- Используя npm, меня постоянно поражают ошибки ENOENT.DELETE. Удаление моего пакета-lock.json и переустановка заняли годы моей жизни.
- Используя пряжу, я не смог
yarn install
в bar
. Пряжа следует за file:
зависимость от @foo/core
, видит, что это зависит от @foo/errors
и не знает о символической ссылке lerna. Это заставляет его потерпеть неудачу, заявив, что не может найти @foo/errors
.
Это сделало запись фактического кода для этого проекта второстепенным для этого беспорядка управления зависимостями.
Как я могу сделать это (я чувствую себя довольно просто?)? Откройте для lerna/пряжи /npm/pnpm/shell-скрипты/MS DOS в этот момент.
Ответы
Ответ 1
Можете ли вы переместить свою lerna в каталог, в котором есть "foo" и "bar"? Это возможно?
root/
foo/
packages/
core/
package.json
errors/
package.json
bar/
package.json
lerna.json
И в вашем файле lerna вы можете добавить свои репозиции к пакетам
{
"lerna": "2.9.0",
"packages": [
"foo/packages/*",
"bar/",
],
}
Ответ 2
Использование может попробовать следующее:
Foo/пакеты/ядро /package.json
{... dependencies: { "@foo/errors": "file:../errors" } }
bar/package.json
{... dependencies: { "@foo/core": "file:../foo/packages/core" } }