这是我项目package.json的dependencies
"dependencies": {
...
"react-infinite-viewer": "^0.28.0"
}
其中这个包的依赖关系如下
react-infinite-viewer依赖infinite-viewer,infinite-viewer依赖gesto,
我把gesto的代码修改了,我要怎么配置才可以在每次npm i react-infinite-viewer的时候使用修改后的gesto代码包
项目的实际情况:项目依赖包直接或间接依赖于gesto其实不止一个。 这意味着这是一个多个包在不同层级依赖gesto问题(但项目不直接使用gesto这个包)。
我曾试过使用下面这个方式:
修改项目package.json的dependencies
"dependencies": {
...
"react-infinite-viewer": "^0.28.0",
"gesto":"file:packages/gesto"
}
这种方式只能在项目的node_modules中安装修改后的代码,意味着我只能在项目中直接使用gesto才是修改后的代码,但我使用的是react-infinite-viewer,而react-infinite-viewer使用的还是原来的代码
myproject
->node_modules
->react-infinite-viewer
->node_modules
->infinite-viewer
->node_modules
gesto // 这里安装的还是旧代码的gesto
...
->gesto // 这里是修改后的
使用pnpm或者lerna可以解决吗?要怎么配置
补充:根据楼下大佬的回答,如果使用的是yarn的话,解决办法可以更简洁
只需配置resolutions即可
"resolutions": {
"gesto":"file:packages/gesto",
},
Yarn 的选择性依赖项解析功能与 npm-force-resolutions 的功能非常相似
但是,Yarn 的选择性依赖项解析功能是 npm-force-resolutions 的默认功能。不需要安装 npm-force-resolutions 可以使用。
yarn 选择性依赖项