我们有一个使用Yarn 的“工作区”功能的 monorepo ,这意味着只要有可能,Yarn 会将依赖项提升到 monorepo 的根node_modules
目录,而不是将它们保存在单个包的node_modules
目录中。这依赖于 Node 的模块解析算法,该算法继续在 dir 树的目录中搜索模块,node_modules
直到找到所需的模块。
在导入另一个包(monorepo 内部或外部)的文件中使用 Flow 类型时,在包含该文件的包中运行 Flow 会导致引发Cannot resolve <package-name>
错误。似乎 Flow 使用了不同的模块解析算法,并且由于安装的模块被提升到根目录并且 Flow 不会继续搜索目录树而失败。
除了从根目录运行 Flow 之外,还有其他方法吗?从根目录运行并不是最优的,因为它不允许在 monorepo 中对不同的包进行不同的设置。
节点版本: 10.8.0
flow-bin
版本: 0.78.0