作为开发过程的一部分,我想使用子文件夹中的父 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: ./dist
in编译tsconfig.json
。我有多个入口点(一个用于主库,一个用于每个对等依赖项,例如:import withLogary from 'logary/plugins/nextjs'
.
我希望能够在import Logary from 'logary';
里面编写,./examples/with-nextjs
并且让Logary
构造函数具有附加到它的类型,这些类型可以被 TypeScript 编译器完全“解析”。我希望在重新加载.
时反映更改./examples/with-nextjs
。
这不是 monorepo(在常识中)。我试过yarn link
in.
然后yarn link logary
inside ./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/
文件夹作为前缀添加到所有输出路径,这不是我想要的