作为开发过程的一部分,我想使用子文件夹中的父 NPM 包。让我们称我的图书馆为“logary”。
结构:
.
|- 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: ./distin编译tsconfig.json。我有多个入口点(一个用于主库,一个用于每个对等依赖项,例如:import withLogary from 'logary/plugins/nextjs'.
我希望能够在import Logary from 'logary';里面编写,./examples/with-nextjs并且让Logary构造函数具有附加到它的类型,这些类型可以被 TypeScript 编译器完全“解析”。我希望在重新加载.时反映更改./examples/with-nextjs。
这不是 monorepo(在常识中)。我试过yarn linkin.然后yarn link logaryinside ./examples/with-nextjs,这似乎没有解决它(无法导入模块)。此外,当我将版本撞到.时6.0.0,当我yarn install在里面./examples/with-nextjs时,yarn 抱怨该版本未发布到 npmjs.com 并要求我选择以前的版本,然后它会下载该版本。
我知道有Lerna(“将大型代码库拆分为独立的独立版本包对于代码共享非常有用。”——这是一个很小的代码库,只有一个包,我只想从一个单一的方向引用它例如)和Yarn 工作区(“它允许你设置多个包,这样你只需要运行一次 yarn install 就可以一次安装所有包。”——这不是我的目标)
我对向 in 添加任何特殊配置(如paths)不感兴趣tsconfig.json,./examples/with-nextjs因为这样就不仅仅是将示例复制到您自己的应用程序中。
➡ 如何最好地构建具有多个对等依赖项和示例文件夹的 TypeScript 库项目?
也许相关?
- 使用 yarn 工作空间和 typescript 的项目引用来引用另一个包子目录——
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/文件夹作为前缀添加到所有输出路径,这不是我想要的