判断一个npm包名是否有效validate-npm-package-name库
1.peerDependencies:
peerDependencies 是 npm 包的一种依赖声明方式,主要用于声明包与其他包之间的“对等依赖”关系。
1.1为什么使用 peerDependencies?
- 避免重复安装:如果多个包依赖同一个包的不同版本,使用
peerDependencies可以避免重复安装多个版本。 - 版本兼容性:确保最终用户安装的版本与当前包兼容。
- 避免冲突:避免不同包之间依赖相同包的不同版本导致的冲突。
1.2如何使用 peerDependencies?
在 package.json 文件中,可以添加 peerDependencies 字段来声明对等依赖关系。
假如我想使用react的hooks,hooks依赖于react的版本>=16.8.0但不希望直接安装 16.8.0版本的react,而是希望用户自己安装并确保版本兼容性
{
"name": "my-package",
"version": "1.0.0",
"peerDependencies": {
"react": ">=16.8.0"
}
}
2.bundledDependencies:
bundledDependencies 是 package.json 文件中的一个字段,用于指定在发布 npm 包时应包含在该包内的依赖项。这些依赖项将会被打包进你的 npm 包中,使得用户在安装你的包时,这些依赖也会一并安装。
2.1使用场景:
- 当你的包依赖于一些外部包,而这些外部包对于你的包的正常运行至关重要,你希望确保用户在任何环境中安装你的包时都能获得这些依赖。
- 当你想要控制特定依赖项的确切版本,而不依赖于用户的环境或者用户的全局安装。
- 当你发布的包需要一些特殊的依赖项,这些依赖项可能不易安装或者配置。
2.2如何使用 bundledDependencies
要在 package.json 中使用 bundledDependencies,你需要指定一个包含依赖项名称的数组。这些依赖项必须已经在 dependencies 或 devDependencies 中声明。
2.3例子:
假设你有一个 npm 包,它依赖于 react 和 core-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修改次版本号:当你做了向下兼容的功能性新增修订号:当你做了向下兼容的问题修正