pnpm, зависимость от рабочей области, а также поддержка публикации?
Я новичок в рабочих пространствах pnpm и пытаюсь решить следующую проблему.
Мой демонстрационный проект:
- корень
- пакеты
- общий пользовательский интерфейс
- основная библиотека
- пакеты
common-ui — это пакет на основе Vite, содержащий некоторые компоненты Vue, которые могут повторно использоваться другими пакетами, в моем примере он используется main-lib.
"dependencies": {
"ui-common": "workspace:*"
},
common-ui ссылается на index.ts внутри своего package.json
"main": "index.ts",
index.ts экспортирует мои компоненты Vue:
...
export { default as Heading } from './components/Heading/Heading.vue';
...
Теперь я могу импортировать эти компоненты в main-lib:
import { Heading } from 'common-ui'
Все это прекрасно работает, но я также хотел бы иметь возможность опубликовать свою библиотеку в реестре npm. Поскольку в common-ui используется Vite, можно выполнять сборку в режиме библиотеки: https://vitejs.dev/guide/build.html#library-mode. Мой пакет внутри common-ui нужно будет изменить на:
{
"name": "common-ui",
"files": ["dist"],
"main": "./dist/common-ui.umd.js",
"module": "./dist/common-ui.es.js",
"exports": {
".": {
"import": "./dist/common-ui.es.js",
"require": "./dist/common-ui.umd.js"
}
}
}
main больше не ссылается на index.ts, а на папку dist, которая обновляется только при запуске команды vite. Есть ли способ поддерживать как публикацию/управление версиями, так и ссылку на фактический исходный код из основной библиотеки?
Я быстро взглянул на Rush.js, но я не уверен, предлагает ли решение, и я хочу быть уверенным, прежде чем продолжить этот путь.