Typescript 使用纱线链接消费具有对等依赖性的本地npm包时出现问题
在尝试使用Typescript 使用纱线链接消费具有对等依赖性的本地npm包时出现问题,typescript,yarnpkg,rollupjs,npm-link,peer-dependencies,Typescript,Yarnpkg,Rollupjs,Npm Link,Peer Dependencies,在尝试使用样式化组件开发React组件库时,我遇到了以下问题 在本例中,假设我们有两个回购,app和core,并且core将被app消费 目前,core是用TypeScript编写的,并使用tsc构建的 为了快速迭代,我尝试使用warn link将core链接到app 这对于制作appfindcore。。。我面临的问题是,当core的编译类型脚本代码试图要求一个包时,比如样式化组件,它试图在core的节点模块(app的非)中找到这个包。由于我已将组件样式化为对等依赖项和开发依赖项,因此可以在核心
样式化组件
开发React组件库时,我遇到了以下问题
在本例中,假设我们有两个回购,app
和core
,并且core
将被app
消费
目前,core
是用TypeScript编写的,并使用tsc
构建的
为了快速迭代,我尝试使用warn link
将core
链接到app
这对于制作app
findcore
。。。我面临的问题是,当core
的编译类型脚本代码试图要求一个包时,比如样式化组件
,它试图在core
的节点模块
(app
的非)中找到这个包。由于我已将组件样式化为对等依赖项和开发依赖项,因此可以在核心
的节点_模块
中找到它,但这不是我想要的。我希望它使用应用程序的样式化组件
我尝试过的纱线链接
的一种替代方法是通过文件:/path
将核心
的依赖项添加到应用程序
。这似乎像预期的那样起作用,但带来了新的问题。我如何在package.json
中找到我的开发机器的路径,只用于本地开发(而不需要不断地来回切换)?此外,在核心
中进行的任何更新似乎都需要将包从应用程序
中删除,并在重新添加之前清除Thread的缓存
有没有更简单的方法来实现这个场景?我刚开始将汇总或Webpack作为解决方案,但不确定这是否是正确的方向。正如您所说,typescript正在“错误地”解决这些问题
要解决此问题,请告诉typescript解决tsconfig.json>compilerOptions>path中消费者的node_模块中的问题包,如下所示:
"paths": {
"rxjs/*": ["node_modules/rxjs/*"],
}
另外,请参阅以了解更多信息。我们需要在core repo的devDependencies中使用样式化组件库,因为在core repo中开发可重用组件是必需的
同时,我们需要告诉app repo从app repo的node_模块加载核心repo的对等依赖项
我们可以使用webpack,例如,如果我们使用react脚本生成应用程序repo,我们可以运行Thread eject并在config文件夹中找到webpack.config.js,还可以更改resolve.alias部分
app/config/webpack.config.js
{
...
resolve: {
...
alias: {
...
core: path.resolve("./node_modules/core") // path must be imported above.
}
}
}
有关更多详细信息:这不是纱线链接的解决方案。
但对于那些在管理本地回购协议方面有问题的人来说,这是一个解决方案
只需使用yalc
来管理您的本地软件包,而不是纱线链接
或纱线添加链接:…
也许yalc()可以帮助您。