Разрешить локальный проект в зависимости от локальных пакетов 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" } }