【问题标题】:Using a peer dependency in npm package在 npm 包中使用对等依赖项
【发布时间】:2020-07-05 10:46:51
【问题描述】:

我在一个充满实用功能的 npm 包中将 momentjs 列为对等依赖项。这些功能之一使用矩。

"peerDependencies": {
    "moment": "2.x.x"
},

以下是使用时刻的简化视图:

import moment from 'moment'

export default function formatDate(someDate) {
  return moment(someDate).format('MM/DD/YYYY')
}

我的 package.json 看起来像这样:

"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
    "dist"
],
"scripts": {
    "build": "tsc",
    "publish-free": "npm publish --access public"
},

当我运行“npm run build”时,我在终端中收到一条错误消息,提示“找不到模块'moment'”。

我目前正在通过使用 npm 链接将其连接到我的主项目来测试包,我已经安装了 moment 但我无法通过构建阶段。

【问题讨论】:

  • 您应该将其安装为开发依赖项,并将其标记为其他人的对等依赖项。
  • 尝试运行tsc --preserveSymlinks作为构建脚本。
  • 添加为开发依赖项似乎是共识并且对我有用!谢谢。

标签: javascript node.js typescript npm


【解决方案1】:

只需将其作为依赖项安装即可。为什么要将其安装为 peerDependency?

【讨论】:

  • 因为 moment 安装在我的父项目中,我试图避免可能依赖于同一包的两个不同版本。
  • 相同的主要版本?
  • 确实,对于momentjs,我不太可能最终得到不同的主要版本。不过,总的来说,对等依赖项的全部意义难道不是您可以从父项目已安装的依赖项中捎带回来吗?
  • 这就是我的全部观点。一般来说,您不应该使用对等依赖项,好吗?
猜你喜欢
  • 2018-04-22
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
相关资源
最近更新 更多