Как настроить родительскую библиотеку (в TS) для связывания из ее примеров?
Я хотел бы использовать родительский пакет NPM из подпапки как часть процесса разработки. Назовем мою библиотеку "логарий".
Состав:
.
|- package.json
|- tsconfig.json
|- src
|- ... all the source code
|- dist
|- ... compiled TS as .js, .js.map and .d.ts
|- examples
|- with-nextjs
|- package.json
|- tsconfig.json
Библиотека написана на TypeScript, и это пример. Родитель компилируется сoutDir: ./dist
в tsconfig.json
. У меня есть несколько точек входа (одна для основной библиотеки, по одной для каждой одноранговой зависимости, например:import withLogary from 'logary/plugins/nextjs'
.
Я хотел бы иметь возможность писать import Logary from 'logary';
внутри ./examples/with-nextjs
и имеют Logary
, конструктор, имеет прикрепленные к нему типы, которые полностью "разрешимы" компилятором TypeScript. Я хочу изменений в.
быть отраженным, когда ./examples/with-nextjs
перезагружается.
Это не монорепо (в обычном смысле). я пыталсяyarn link
в .
а потом yarn link logary
внутри ./examples/with-nextjs
, который, похоже, не решает эту проблему (невозможно импортировать модуль). Кроме того, поскольку я добавил версию в.
к 6.0.0
, как и я yarn install
внутри ./examples/with-nextjs
, yarn жалуется, что версия не опубликована на npmjs.com, и просит меня выбрать предыдущую версию, которую затем загружает.
Я знаю, что есть Лерна ("Разделение больших баз кода на отдельные пакеты с независимыми версиями чрезвычайно полезно для совместного использования кода". Это крошечная база кода и только один пакет, я просто хочу сослаться на него в одном направлении из пример) и Yarn Workspaces ("Это позволяет вам настроить несколько пакетов таким образом, что вам нужно всего лишь один раз запустить yarn install, чтобы установить их все за один проход". Это не моя цель)
Я не заинтересован в добавлении какой-либо специальной конфигурации (например, paths
) к tsconfig.json
в ./examples/with-nextjs
потому что тогда это не просто копирование примера в качестве собственного приложения.
➡ Как мне лучше всего структурировать проект библиотеки TypeScript с множественными зависимостями и с папкой примеров?
Может быть связано?
- Используйте рабочие области yarn и ссылки на проекты машинописного текста для ссылки на другой подкаталог пакета - используйте
exports
в package.json для решенияlogary/plugins/nextjs
проблема (я счастлив делать это, но я не могу правильно связать родительский проект с одноранговыми узлами, поэтому простоimport Logary from 'logary'
в примерах используется старая опубликованная версия, несмотря на то, что я запустилyarn link
) - Одноранговые зависимости в Monorepo - это, вероятно, хорошее решение проблемы одноранговых зависимостей (например, с https://www.npmjs.com/package/rollup-plugin-peer-deps-external)
- Использование Lerna с неопубликованными пакетами - имеет аналогичный вопрос, но не спрашивает о пакетах приложений только для потребления, таких как мой
with-nextjs
. Кроме того, мой корень находится в.
не наpackages/logary
; но может я должен соответствовать? - С помощью
composite: true
в tsconfig.json в.
а такжеreferences
в дочернем проектеtsconfig.json
меняет то, какoutDir
работает; он добавляетsrc/
папка в качестве префикса для всех путей вывода, что я не хочу