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, но я не уверен, предлагает ли решение, и я хочу быть уверенным, прежде чем продолжить этот путь.

0 ответов

Другие вопросы по тегам