Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 使用纱线链接消费具有对等依赖性的本地npm包时出现问题_Typescript_Yarnpkg_Rollupjs_Npm Link_Peer Dependencies - Fatal编程技术网

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
find
core
。。。我面临的问题是,当
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()可以帮助您。