npm (Node Package Manager)
安装与更新
-
npm install或npm i:- 安装项目依赖:根据
package.json文件安装所有列出的依赖。 - 参数:
-S, --save:保存到dependencies(默认行为)。-D, --save-dev:保存到devDependencies。-O, --save-optional:保存到optionalDependencies。--no-save:不修改package.json。--legacy-peer-deps:忽略 peer dependencies 的冲突。--production:只安装生产依赖(即不在devDependencies中的包)。
- 使用场景:适用于首次安装或更新项目依赖。
- 安装项目依赖:根据
-
npm install <package>或npm i <package>:- 安装指定包:安装一个特定的 npm 包。
- 参数:
@<version>:安装特定版本。--save-exact:保存精确版本号。-g:全局安装。
- 使用场景:适用于添加新依赖或安装特定版本的包。
-
npm update:- 更新所有依赖:更新所有依赖到最新版本(受限于
package.json的版本范围)。 - 参数:
--save:保存更新后的版本到package.json。
- 使用场景:适用于保持项目依赖为最新状态。
- 更新所有依赖:更新所有依赖到最新版本(受限于
-
npm outdated:- 列出可更新的包:显示当前已安装但有新版本可用的包及其版本信息。
- 使用场景:帮助开发者了解哪些包可以更新。
发布与管理包
-
npm publish:- 发布包:将本地包发布到 npm 注册表。
- 参数:
--access public|restricted:设置包的访问权限。
- 使用场景:适用于发布新的包或更新现有包。
-
npm unpublish <package>@<version>:- 移除包:从 npm 注册表中移除一个包的特定版本。
- 参数:
--force:强制移除。
- 使用场景:适用于删除不再需要的包版本。
-
npm deprecate <package> "message":- 废弃包:标记一个包为废弃并附带一条消息。
- 使用场景:适用于通知用户某个包不再维护或推荐替代方案。
管理全局包
-
npm install -g <package>或npm i -g <package>:- 全局安装:安装一个包到全局环境中。
- 使用场景:适用于安装 CLI 工具或其他需要全局访问的包。
-
npm uninstall -g <package>:- 卸载全局包:从全局环境中移除一个包。
- 使用场景:适用于清理不再需要的全局包。
脚本与命令
-
npm run <script-name>:- 运行脚本:执行定义在
package.json中的脚本。 - 使用场景:适用于执行构建、测试、部署等任务。
- 运行脚本:执行定义在
-
npm start:- 启动应用:等同于
npm run start。 - 使用场景:适用于启动应用程序。
- 启动应用:等同于
-
npm test:- 运行测试:等同于
npm run test。 - 使用场景:适用于执行测试套件。
- 运行测试:等同于
-
npm exec <command>或npx <command>:- 临时执行命令:无需安装即可执行一个命令。
- 使用场景:适用于一次性使用某些工具或命令。
工具与信息
-
npm init:- 初始化项目:创建一个新的
package.json文件。 - 参数:
-y, --yes:自动确认所有默认选项。
- 使用场景:适用于开始新项目。
- 初始化项目:创建一个新的
-
npm audit:- 安全审计:检查项目的依赖树中是否有已知的安全漏洞。
- 参数:
--production:只扫描生产依赖。
- 使用场景:适用于确保项目安全性。
-
npm view <package>:- 查看包信息:显示 npm 注册表中包的详细信息。
- 使用场景:适用于获取包的元数据。
-
npm search <query>:- 搜索包:在 npm 注册表中搜索包。
- 使用场景:适用于查找特定功能或名称的包。
-
npm outdated:- 列出过时包:显示当前已安装但有新版本可用的包及其版本信息。
- 使用场景:帮助开发者了解哪些包可以更新。
-
npm ls <package>:- 列出安装情况:显示指定包的安装情况。
- 使用场景:适用于检查特定包是否已安装。
-
npm list:- 列出所有包:显示所有已安装的包。
- 使用场景:适用于查看当前项目的依赖结构。
其他
-
npm ci:- 一致性安装:严格按照
package-lock.json安装依赖,适合 CI/CD 环境。 - 使用场景:确保构建环境的一致性。
- 一致性安装:严格按照
-
npm cache clean --force:- 清理缓存:清除 npm 缓存。
- 使用场景:解决缓存相关问题或释放磁盘空间。
-
npm link:- 创建符号链接:方便本地开发和测试。
- 使用场景:适用于开发期间快速测试本地模块。
-
npm unlink:- 删除符号链接:移除通过
npm link创建的链接。 - 使用场景:清理不再需要的符号链接。
- 删除符号链接:移除通过
cnpm (China npm)
基础命令
-
cnpm install或cnpm i:- 安装项目依赖:基于中国的镜像源安装项目依赖。
- 使用场景:适用于国内开发者,加快下载速度。
-
cnpm install <package>或cnpm i <package>:- 安装指定包:基于中国的镜像源安装指定包。
- 使用场景:适用于国内开发者,加快下载速度。
-
cnpm update:- 更新所有依赖:基于中国的镜像源更新所有依赖。
- 使用场景:适用于国内开发者,保持项目依赖为最新状态。
-
cnpm outdated:- 列出可更新的包:基于中国的镜像源列出可更新的包。
- 使用场景:帮助国内开发者了解哪些包可以更新。
发布与管理包
-
cnpm publish:- 发布包:基于中国的镜像源发布包。
- 使用场景:适用于国内开发者发布包到 npm 注册表。
-
cnpm unpublish <package>@<version>:- 移除包:基于中国的镜像源移除包。
- 使用场景:适用于国内开发者移除不再需要的包版本。
管理全局包
-
cnpm install -g <package>或cnpm i -g <package>:- 全局安装:基于中国的镜像源全局安装包。
- 使用场景:适用于国内开发者安装 CLI 工具或其他需要全局访问的包。
-
cnpm uninstall -g <package>:- 卸载全局包:基于中国的镜像源卸载全局包。
- 使用场景:适用于国内开发者清理不再需要的全局包。
脚本与命令
-
cnpm run <script-name>:- 运行脚本:基于中国的镜像源执行定义在
package.json中的脚本。 - 使用场景:适用于国内开发者执行构建、测试、部署等任务。
- 运行脚本:基于中国的镜像源执行定义在
-
cnpm start:- 启动应用:基于中国的镜像源启动应用程序。
- 使用场景:适用于国内开发者启动应用程序。
-
cnpm test:- 运行测试:基于中国的镜像源运行测试套件。
- 使用场景:适用于国内开发者执行测试。
工具与信息
-
cnpm init:- 初始化项目:基于中国的镜像源创建一个新的
package.json文件。 - 使用场景:适用于国内开发者开始新项目。
- 初始化项目:基于中国的镜像源创建一个新的
-
cnpm audit:- 安全审计:基于中国的镜像源检查项目的依赖树中是否有已知的安全漏洞。
- 使用场景:适用于国内开发者确保项目安全性。
-
cnpm view <package>:- 查看包信息:基于中国的镜像源显示 npm 注册表中包的详细信息。
- 使用场景:适用于国内开发者获取包的元数据。
-
cnpm search <query>:- 搜索包:基于中国的镜像源在 npm 注册表中搜索包。
- 使用场景:适用于国内开发者查找特定功能或名称的包。
其他
-
cnpm ci:- 一致性安装:基于中国的镜像源严格按照
package-lock.json安装依赖,适合 CI/CD 环境。 - 使用场景:确保国内开发者的构建环境一致性。
- 一致性安装:基于中国的镜像源严格按照
-
cnpm cache clean:- 清理缓存:基于中国的镜像源清除 npm 缓存。
- 使用场景:解决国内开发者的缓存相关问题或释放磁盘空间。
Yarn
安装与更新
-
yarn install或yarn:- 安装项目依赖:根据
package.json和yarn.lock文件安装所有列出的依赖。 - 参数:
--check-files:检查文件完整性。--ignore-scripts:忽略脚本。--frozen-lockfile:严格遵循yarn.lock。
- 使用场景:适用于首次安装或更新项目依赖。
- 安装项目依赖:根据
-
yarn add <package>:- 添加并安装指定包:安装一个特定的 npm 包。
- 参数:
-D, --dev:保存到devDependencies。-P, --peer:保存到peerDependencies。-O, --optional:保存到optionalDependencies。--exact:保存精确版本号。
- 使用场景:适用于添加新依赖或安装特定版本的包。
-
yarn upgrade:- 更新所有依赖:更新所有依赖到最新版本(受限于
package.json的版本范围)。 - 参数:
--latest:升级到最新的稳定版。
- 使用场景:适用于保持项目依赖为最新状态。
- 更新所有依赖:更新所有依赖到最新版本(受限于
-
yarn upgrade-interactive:- 交互式更新:交互式选择要更新的包。
- 使用场景:适用于精细控制更新过程。
发布与管理包
-
yarn publish:- 发布包:将本地包发布到 npm 注册表。
- 使用场景:适用于发布新的包或更新现有包。
-
yarn unpublish <package>@<version>:- 移除包:从 npm 注册表中移除一个包的特定版本。
- 使用场景:适用于删除不再需要的包版本。
管理全局包
-
yarn global add <package>:- 全局安装:安装一个包到全局环境中。
- 使用场景:适用于安装 CLI 工具或其他需要全局访问的包。
-
yarn global remove <package>:- 卸载全局包:从全局环境中移除一个包。
- 使用场景:适用于清理不再需要的全局包。
脚本与命令
-
yarn run <script-name>:- 运行脚本:执行定义在
package.json中的脚本。 - 使用场景:适用于执行构建、测试、部署等任务。
- 运行脚本:执行定义在
-
yarn start:- 启动应用:等同于
yarn run start。 - 使用场景:适用于启动应用程序。
- 启动应用:等同于
-
yarn test:- 运行测试:等同于
yarn run test。 - 使用场景:适用于执行测试套件。
- 运行测试:等同于
工具与信息
-
yarn init:- 初始化项目:创建一个新的
package.json文件。 - 使用场景:适用于开始新项目。
- 初始化项目:创建一个新的
-
yarn audit:- 安全审计:检查项目的依赖树中是否有已知的安全漏洞。
- 使用场景:适用于确保项目安全性。
-
yarn why <package>:- 查找来源:查找特定包的来源。
- 使用场景:适用于理解为什么某些包会被安装。
-
yarn info <package>:- 查看包信息:显示 npm 注册表中包的详细信息。
- 使用场景:适用于获取包的元数据。
-
yarn licenses generate-disclaimer:- 生成许可证声明:生成许可证免责声明。
- 使用场景:适用于法律合规和许可管理。
-
yarn outdated:- 列出过时包:显示当前已安装但有新版本可用的包及其版本信息。
- 使用场景:帮助开发者了解哪些包可以更新。
其他
-
yarn install --frozen-lockfile:- 一致性安装:严格按照
yarn.lock安装依赖,适合 CI/CD 环境。 - 使用场景:确保构建环境的一致性。
- 一致性安装:严格按照
-
yarn cache clean:- 清理缓存:清除 yarn 缓存。
- 使用场景:解决缓存相关问题或释放磁盘空间。
-
yarn dlx <command>:- 临时执行命令:无需安装即可执行一个命令。
- 使用场景:适用于一次性使用某些工具或命令。
pnpm
安装与更新
-
pnpm install或pnpm i:- 安装项目依赖:根据
package.json和pnpm-lock.yaml文件安装所有列出的依赖。 - 参数:
--prefer-offline:优先使用缓存。--strict-peer-dependencies:严格处理 peer dependencies。
- 使用场景:适用于首次安装或更新项目依赖。
- 安装项目依赖:根据
-
pnpm add <package>:- 添加并安装指定包:安装一个特定的 npm 包。
- 参数:
-S, --save-prod:保存到dependencies。-D, --save-dev:保存到devDependencies。-O, --save-optional:保存到optionalDependencies。--save-exact:保存精确版本号。
- 使用场景:适用于添加新依赖或安装特定版本的包。
-
pnpm update:- 更新所有依赖:更新所有依赖到最新版本(受限于
package.json的版本范围)。 - 参数:
--latest:升级到最新的稳定版。
- 使用场景:适用于保持项目依赖为最新状态。
- 更新所有依赖:更新所有依赖到最新版本(受限于
-
pnpm outdated:- 列出可更新的包:显示当前已安装但有新版本可用的包及其版本信息。
- 使用场景:帮助开发者了解哪些包可以更新。
发布与管理包
-
pnpm publish:- 发布包:将本地包发布到 npm 注册表。
- 使用场景:适用于发布新的包或更新现有包。
-
pnpm unpublish <package>@<version>:- 移除包:从 npm 注册表中移除一个包的特定版本。
- 使用场景:适用于删除不再需要的包版本。
管理全局包
-
pnpm install -g <package>或pnpm i -g <package>:- 全局安装:安装一个包到全局环境中。
- 使用场景:适用于安装 CLI 工具或其他需要全局访问的包。
-
pnpm uninstall -g <package>:- 卸载全局包:从全局环境中移除一个包。
- 使用场景:适用于清理不再需要的全局包。
脚本与命令
-
pnpm run <script-name>:- 运行脚本:执行定义在
package.json中的脚本。 - 使用场景:适用于执行构建、测试、部署等任务。
- 运行脚本:执行定义在
-
pnpm start:- 启动应用:等同于
pnpm run start。 - 使用场景:适用于启动应用程序。
- 启动应用:等同于
-
pnpm test:- 运行测试:等同于
pnpm run test。 - 使用场景:适用于执行测试套件。
- 运行测试:等同于
工具与信息
-
pnpm init:- 初始化项目:创建一个新的
package.json文件。 - 使用场景:适用于开始新项目。
- 初始化项目:创建一个新的
-
pnpm audit:- 安全审计:检查项目的依赖树中是否有已知的安全漏洞。
- 使用场景:适用于确保项目安全性。
-
pnpm why <package>:- 查找来源:查找特定包的来源。
- 使用场景:适用于理解为什么某些包会被安装。
-
pnpm info <package>:- 查看包信息:显示 npm 注册表中包的详细信息。
- 使用场景:适用于获取包的元数据。
-
pnpm licenses:- 管理许可证:管理许可证。
- 使用场景:适用于法律合规和许可管理。
-
pnpm outdated:- 列出过时包:显示当前已安装但有新版本可用的包及其版本信息。
- 使用场景:帮助开发者了解哪些包可以更新。
其他
-
pnpm install --frozen-lockfile:- 一致性安装:严格按照
pnpm-lock.yaml安装依赖,适合 CI/CD 环境。 - 使用场景:确保构建环境的一致性。
- 一致性安装:严格按照
-
pnpm recursive <command>:- 递归执行命令:在 monorepo 中递归执行命令。
- 使用场景:适用于多包仓库中的批量操作。
-
pnpm dlx <command>:- 临时执行命令:无需安装即可执行一个命令。
- 使用场景:适用于一次性使用某些工具或命令。
-
pnpm cache clean:- 清理缓存:清除 pnpm 缓存。
- 使用场景:解决缓存相关问题或释放磁盘空间。
-
pnpm link:- 创建符号链接:方便本地开发和测试。
- 使用场景:适用于开发期间快速测试本地模块。
-
pnpm unlink:- 删除符号链接:移除通过
pnpm link创建的链接。 - 使用场景:清理不再需要的符号链接。
- 删除符号链接:移除通过
总结
每个工具的核心命令非常相似,但有一些细微的区别和各自特有的功能。以下是几个关键点:
- 锁文件:
npm使用package-lock.json,Yarn使用yarn.lock,而pnpm使用pnpm-lock.yaml来锁定依赖版本。 - 安装速度:
pnpm由于其符号链接机制通常具有最快的安装速度,特别是在处理大型项目或 monorepo 时表现尤为突出。 - monorepo 支持:
Yarn和pnpm提供了强大的多包仓库(monorepos)支持,方便管理和同步多个包之间的依赖关系。 - 国内网络优化:
cnpm对中国区开发者提供了更快的下载速度和更好的用户体验。
