Я работаю над монорепо, используя рабочие пространства пряжи. Один из моих пакетов — это библиотека реагирования, опубликованная в NPM. Это зависит от другого пакета в монорепозитории, который не публикуется в NPM.
Когда я устанавливаю библиотеку как зависимость в другом проекте, я получаю ошибку 404, потому что пакета, от которого она зависит, нет в реестре NPM.
Я создал репозиторий на GitHub, чтобы воспроизвести проблему -- test-monorepo
Вот пакет на NPM -- jake-react-lib
Not Found - GET https://registry.npmjs.org/jake-core - Not found 'jake-core@*' is not in this registry
yarn workspaces info подтверждает, что jake-core является зависимостью рабочей области от jake-react-lib, поэтому кажется неправильным, что мне нужно опубликовать оба пакета, чтобы один мог использовать другой.
{
"jake-core": {
"location": "packages/core",
"workspaceDependencies": [],
"mismatchedWorkspaceDependencies": []
},
"jake-react-lib": {
"location": "packages/react-lib",
"workspaceDependencies": [
"jake-core"
],
"mismatchedWorkspaceDependencies": []
}
}
@morganney Я опубликовал дополнительную проблему, которую изучаю в новом вопросе. stackoverflow.com/questions/78318141/…





В первую очередь это связано с тем, как вы создаете и определяете рабочую область jake-core, и что вы определяете jake-core как зависимость, а не devDependency.
Вы хотите обновить свой vite.config.ts, чтобы он, возможно, не включал суффикс .ts:
lib: {
entry: resolve(__dirname, "src/index.ts"),
name: "jake-core",
fileName: "index", // This, remove the '.ts'
},
Вы хотите обновить свой tsconfig.json, включив в него outDir, равный каталогу сборки для vite:
"outDir": "dist"
Вы хотите обновить package.json, чтобы он указывал main на выходные данные вашей сборки:
"main": "dist/index.js",
"types": "dist/src/index.d.ts"
Вы можете добавить jake-core в devDependencies и удалить из dependencies файла jake-react-lib package.json, чтобы потребителям не приходилось загружать jake-core при запуске npm i jake-react-lib:
"devDependencies": {
"jake-core": "0.0.1"
}
Теперь вы можете запустить yarn workspace jake-core run build, а затем yarn workspace jake-react-lib run build.
Теперь вы можете публиковать jake-react-lib в NPM без необходимости публикации jake-core.
Вот PR, описывающий эти изменения.
Есть и другие способы улучшить то, что вы делаете, например, не включать каталог src/ в выходные данные сборки для jake-core, но это должно дать вам то, что вы хотите (опубликовать jake-react-lib независимо).
Я вижу, что вы смогли это исправить сейчас. Последняя публикация после моего ответа.