【问题标题】:How do you import a "subdependency" in ES6?如何在 ES6 中导入“子依赖”?
【发布时间】:2018-02-25 02:27:05
【问题描述】:

我有一个包react-router,它依赖于path-to-regexp。 react-router 不会导出自己的 path-to-regexp 导入。在我的顶级模块中,如何导入与react-router 完全相同的path-to-regexp?或者这不可能?

作为参考,我使用 Yarn 作为我的依赖管理器,我正在考虑为此使用它的 resolution 配置,但我认为版本不匹配可能会成为一个问题。

如果我可以import path from 'react-router/node_modules/path-to-regexp',我会的,但这似乎不起作用。如果我将path-to-regexp 列为我的顶级模块的依赖项,我仍然可以得到版本不匹配的情况。也许有一种方法可以使用node-semver glob 在package.json 中引用与react-router 相同的版本?

【问题讨论】:

  • 为什么你实际上想要相同的版本?如果他们更新到新版本而您自己的代码因此而中断怎么办?
  • @loganfsmyth 是的,在下面答案的 cmets 中写了更多关于它的内容

标签: javascript npm ecmascript-6 yarnpkg


【解决方案1】:

我相信使用 yarn 的 resolutions 功能是最好的选择。我不能重复使用完全相同的模块,但我可以在我的模块中有完全相同版本的副本。如果版本不匹配,yarn 将通过警告通知我,如RFC 中所述。也就是说,我的package.json看起来像这样……

"dependencies": {
  "react-router": "^4.2.0",
  "path-to-regexp": "^1.7.0" <-- same version used by react-router@4.2.0
},
"resolutions": {
  "path-to-regexp": "^1.7.0"
}

【讨论】:

  • 反应路由器在内部使用一个版本,而您为自己的目的使用不同版本时,有什么感知问题?
  • @RandyCasburn 只是想确保在 path-to-regexp 中发现错误但没有及时将其变为 react-router 中的 PR 时功能的奇偶性。可能没有必要这么具体,但恕我直言,这仍然是一个有趣的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
相关资源
最近更新 更多