常见的'dependence'

213 阅读3分钟

判断一个npm包名是否有效validate-npm-package-name

1.peerDependencies:

peerDependencies 是 npm 包的一种依赖声明方式,主要用于声明包与其他包之间的“对等依赖”关系。

1.1为什么使用 peerDependencies

  • 避免重复安装:如果多个包依赖同一个包的不同版本,使用 peerDependencies 可以避免重复安装多个版本。
  • 版本兼容性:确保最终用户安装的版本与当前包兼容。
  • 避免冲突:避免不同包之间依赖相同包的不同版本导致的冲突。

1.2如何使用 peerDependencies

package.json 文件中,可以添加 peerDependencies 字段来声明对等依赖关系。

假如我想使用reacthookshooks依赖于react的版本>=16.8.0但不希望直接安装 16.8.0版本的react,而是希望用户自己安装并确保版本兼容性

{
  "name": "my-package",
  "version": "1.0.0",
  "peerDependencies": {
    "react": ">=16.8.0"
  }
}

2.bundledDependencies:

bundledDependenciespackage.json 文件中的一个字段,用于指定在发布 npm 包时应包含在该包内的依赖项。这些依赖项将会被打包进你的 npm 包中,使得用户在安装你的包时,这些依赖也会一并安装。

2.1使用场景

  • 当你的包依赖于一些外部包,而这些外部包对于你的包的正常运行至关重要,你希望确保用户在任何环境中安装你的包时都能获得这些依赖。
  • 当你想要控制特定依赖项的确切版本,而不依赖于用户的环境或者用户的全局安装。
  • 当你发布的包需要一些特殊的依赖项,这些依赖项可能不易安装或者配置。

2.2如何使用 bundledDependencies

要在 package.json 中使用 bundledDependencies,你需要指定一个包含依赖项名称的数组。这些依赖项必须已经在 dependenciesdevDependencies 中声明。

2.3例子:

假设你有一个 npm 包,它依赖于 reactcore-js,并且你希望在发布时将这两个包捆绑在一起,可以在 package.json 文件中这样声明:

{
  "name": "your-package-name",
  "version": "1.0.0",
  "dependencies": {
    "react": "^17.0.0",
    "core-js": "^3.6.5"
  },
  "bundledDependencies": [
    "react",
    "core-js"
  ]
}

2.4发布捆绑的依赖项:

一旦你在 package.json 中声明了 bundledDependencies,当你运行 npm pack 命令时,npm 会创建一个 .tgz 文件,其中包含了你指定的捆绑依赖项。用户在安装你的包时,这些依赖项会被解压并安装。

注意事项

  • 使用 bundledDependencies 时要小心,因为这会增加你的包的大小,并且可能会导致版本控制问题,特别是当捆绑的依赖项更新频繁时。
  • 确保捆绑的依赖项确实有必要捆绑,否则可能会给用户带来不必要的麻烦。
  • 如果捆绑的依赖项有安全更新或修复,你需要及时更新你的包,并重新发布,以确保用户可以获得最新的安全补丁。

通过以上步骤,你可以有效地管理和发布包含捆绑依赖项的 npm 包。

Semver:semver.org/lang/zh-CN/

版本号:x.y.z

  • 主版本号:当你做了不兼容API修改
  • 次版本号:当你做了向下兼容的功能性新增
  • 修订号:当你做了向下兼容的问题修正