当前位置: 首页 > news >正文

包管理工具npm、yarn、pnpm、cnpm详解

1. 包管理工具

1.1 npm

# 安装
$ node 自带 npm# 基本用法
npm install package      # 安装包
npm install             # 安装所有依赖
npm install -g package  # 全局安装
npm uninstall package   # 卸载包
npm update package      # 更新包
npm run script          # 运行脚本# 特点
- Node.js 默认包管理器
- 依赖平铺结构
- 包安装慢
- 磁盘空间占用大

1.2 yarn

# 安装
npm install -g yarn# 基本用法
yarn add package        # 安装包
yarn                    # 安装所有依赖
yarn global add package # 全局安装
yarn remove package     # 卸载包
yarn upgrade package    # 更新包
yarn run script        # 运行脚本# 特点
- 并行安装,速度快
- 自动锁定版本
- 更好的缓存机制
- 更简洁的输出

1.3 pnpm

# 安装
npm install -g pnpm# 基本用法
pnpm add package        # 安装包
pnpm install           # 安装所有依赖
pnpm add -g package    # 全局安装
pnpm remove package    # 卸载包
pnpm update package    # 更新包
pnpm run script        # 运行脚本# 特点
- 硬链接共享依赖
- 节省磁盘空间
- 安装速度快
- 更严格的依赖管理

1.4 cnpm

# 安装
npm install -g cnpm --registry=https://registry.npmmirror.com# 基本用法
cnpm install package    # 安装包
cnpm install           # 安装所有依赖
cnpm install -g package # 全局安装
cnpm uninstall package # 卸载包
cnpm update package    # 更新包
cnpm run script        # 运行脚本# 特点
- 淘宝 NPM 镜像
- 国内访问快
- 同步官方版本

2. 包管理器的特点

NPM:

  • Node.js 默认包管理器
  • 最大的包生态系统
  • 依赖处理较慢
  • 占用空间大

Yarn:

  • Facebook 开发
  • 并行安装
  • 离线模式
  • 确定性安装

PNPM:

  • 节省磁盘空间
  • 快速安装
  • 严格的依赖管理
  • 支持 monorepo

CNPM:

  • 淘宝镜像源
  • 国内快速访问
  • 实时同步官方源

3. 包管理器对比

# 锁文件对比
npm   -> package-lock.json
yarn  -> yarn.lock
pnpm  -> pnpm-lock.yaml
cnpm  -> 无锁文件# 性能对比
安装速度: pnpm > yarn > cnpm > npm
磁盘空间: pnpm > yarn > npm > cnpm
可靠性: yarnpnpm > npm > cnpm

4. 浏览器包管理工具

<!-- Bower (已过时但仍被使用) -->
bower install jquery<!-- jsDelivr CDN -->
<script src="https://cdn.jsdelivr.net/npm/jquery"></script><!-- unpkg -->
<script src="https://unpkg.com/react@17/umd/react.production.min.js"></script>

5. 模块打包工具

# Webpack
npm install webpack webpack-cli --save-dev# Rollup
npm install rollup --save-dev# Vite
npm create vite@latest# Parcel
npm install parcel --save-dev

6. 选择建议

新项目:

  • 个人项目推荐 pnpm
  • 团队项目遵循团队标准

大型项目:

  • monorepo 推荐 pnpm
  • 多包项目推荐 yarn workspaces

小型项目:

  • npm 足够使用
  • yarn 也是好选择

特殊情况:

  • 国内项目可考虑 cnpm
  • 老项目维持原有工具

7. 使用建议

7.1 项目初始化

  1. 使用 create-react-app, vue-cli 等脚手架
  2. 选择合适的包管理器
  3. 设置合适的 .gitignore

7.2 依赖管理

  1. 明确区分 dependencies 和 devDependencies
  2. 使用锁文件确保版本一致
  3. 定期更新依赖版本

7.3 性能优化

  1. 使用缓存机制
  2. 选择合适的镜像源
  3. 优化安装策略

7.4 安全考虑

  • 定期进行安全更新
  • 审查依赖包的安全性
  • 使用 npm audit 等工具

注意:

  1. 团队统一很重要
  2. 保持依赖更新
  3. 注意安全问题
  4. 遵循最佳实践

相关文章:

包管理工具npm、yarn、pnpm、cnpm详解

1. 包管理工具 1.1 npm # 安装 $ node 自带 npm# 基本用法 npm install package # 安装包 npm install # 安装所有依赖 npm install -g package # 全局安装 npm uninstall package # 卸载包 npm update package # 更新包 npm run script #…...

CI/CD是什么?

CI/CD 定义 CI/CD 代表持续集成和持续部署&#xff08;或持续交付&#xff09;。它是一套实践和工具&#xff0c;旨在通过自动化构建、测试和部署来改进软件开发流程&#xff0c;使您能够更快、更可靠地交付代码更改。 持续集成 (CI)&#xff1a;在共享存储库中自动构建、测试…...

[Java]合理封装第三方工具包(附视频)

-1.视频链接 视频版: 视频版会对本文章内容进行详细解释 [Java]合理封装第三方工具包_哔哩哔哩_bilibili 0.核心思想 对第三方工具方法进行封装,使其本地化,降低记忆和使用成本 1.背景 在我们的项目中,通常会引用一些第三方工具包,或者是使用jdk自带的一些工具类 例如: c…...

常规配置、整合IDEA

目录 Redis常规配置 tcp-keepalive security Jedis RedisTemplate 连接池技术 Lua脚本 Jedis集群 Redis应用问题&解决方案 缓存穿透 缓存击穿 缓存雪崩 分布式锁 Redis实现分布式锁 Redis新功能 ACL Redis常规配置 tcp-keepalive security redis.conf中…...

用Python写炸金花游戏

文章目录 **代码分解与讲解**1. **扑克牌的生成与洗牌**2. **给玩家发牌**3. **打印玩家的手牌**4. **定义牌的优先级**5. **判断牌型**6. **确定牌型优先级**7. **比较两手牌的大小**8. **计算每个玩家的牌型并找出赢家**9. **打印结果** 完整代码 以下游戏规则&#xff1a; 那…...

计算机的错误计算(一百九十二)

摘要 用两个大模型计算 csc(0.999), 其中&#xff0c;0.999是以弧度为单位的角度&#xff0c;结果保留5位有效数字。两个大模型均给出了 Python代码与答案。但是&#xff0c;答案是错误的。 例1. 计算 csc(0.999), 其中&#xff0c;0.999是以弧度为单位的角度&#xff0c;结…...

37 Opencv SIFT 特征检测

文章目录 Ptr<SIFT> SIFT::create示例 Ptr SIFT::create Ptr<SIFT> SIFT::create(int nfeatures 0,int nOctaveLayers 3,double contrastThreshold 0.04,double edgeThreshold 10,double sigma 1.6 );参数说明&#xff1a;nfeatures&#xff1a;类型&#x…...

Nginx界的天花板-Oracle 中间件OHS 11g服务器环境搭建

环境信息 服务器基本信息 如下表&#xff0c;本次安装总共使用2台服务器&#xff0c;具体信息如下&#xff1a; 服务器IP DNS F5配置 OHS1 172.xx.xx.xx ohs01.xxxxxx.com ohs.xxxxxx.com OHS2 172.xx.xx.xx ohs02.xxxxxx.com 服务器用户角色信息均为&#xff1a;…...

域名解析协议

一、DNS简述 ‌DNS协议是一种应用层协议&#xff0c;用于将域名转换为对应的IP地址‌&#xff0c;使得客户端可以通过域名来访问Internet上的各种资源‌ DNS的基础设施是由分层的DNS服务器实现的分布式数据库&#xff0c;它运行在UDP之上‌&#xff0c;通常使用端口号53‌ DN…...

微信小程序给外面的view设置display:flex;后为什么无法给里面的view设置宽度

如果父盒子view设置了display:flex&#xff0c;子view设置宽度值无效&#xff0c;宽度值都是随着内容多少而改变&#xff1a; 问题视图&#xff1a; 原因&#xff1a; flex布局元素的子元素&#xff0c;自动获得了flex-shrink的属性 解决方法&#xff1a; 给子view增加:fl…...

Maven怎么会出现一个dependency-reduced-pom.xml的文件

问题 今天打包时突然发现&#xff0c;多出了一个名为dependency-reduced-pom.xml的文件 解决方法 由于使用了maven-shade-plugin插件导致的&#xff0c;在 <plugin> 标签下添加 <configuration><createDependencyReducedPom>false</createDependencyR…...

突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除

GitLab停止为中国大陆、香港和澳门地区提供服务&#xff0c;要求用户在60天内迁移账号&#xff0c;否则将被删除。这一事件即将引起广泛的关注和讨论。以下是对该事件的扩展信息&#xff1a; 1. 背景介绍&#xff1a;GitLab是一家全球知名的软件开发平台&#xff0c;提供代码托…...

自学记录HarmonyOS Next DRM API 13:构建安全的数字内容保护系统

在完成了HarmonyOS Camera API的开发之后&#xff0c;我开始关注更复杂的系统级功能。在浏览HarmonyOS Next文档时&#xff0c;我发现了一个非常有趣的领域&#xff1a;数字版权管理&#xff08;DRM&#xff09;。最新的DRM API 13提供了强大的工具&#xff0c;用于保护数字内容…...

Vue 3 + Element Plus 实现文件上传组件:详细解析与实现指南

Vue 3 文件上传组件实现详解 在实际的前端开发中&#xff0c;文件上传是一个常见的需求&#xff0c;尤其是在需要处理文档、图片或其他类型文件的应用中。Vue 3 结合 Element Plus UI 组件库为我们提供了一个简单且灵活的文件上传解决方案。在这篇文章中&#xff0c;我们将详细…...

qt5.12.11+msvc编译器编译qoci驱动

1.之前编译过minGW编译器编译qoci驱动,很顺利就完成了,文章地址:minGW编译qoci驱动详解,今天按照之前的步骤使用msvc编译器进行编译,直接就报错了: 查了些资料,发现两个编译器在编译时,pro文件中引用的库不一样,下面是msvc编译器引用的库,其中编译引用的库我这里安装…...

Ubuntu 20.04 安装 LNMP

1. 更新系统 sudo apt update sudo apt upgrade2. 安装 Nginx sudo apt install nginx3. 安装 MariaDB (作为 MySQL 的替代) sudo apt install mariadb-server mariadb-client初始化 MariaDB 数据库&#xff08;可选&#xff09; sudo mysql_secure_installation4. 安装 PH…...

Llama 3 简介(一)

目录 1. 引言 1.1 Llama 3 的简介 1.2 性能评估 1.3 开源计划 1.4 多模态扩展 ps 1. 缩放法则 2. 超额训练&#xff08;Over-training&#xff09; 3. 计算训练预算 4. 如何逐步估算和确定最优模型&#xff1f; 2. 概述 2.1 Llama 3 语言模型开发两个主要阶段 2.2…...

在 CentOS 上安装 FFmpeg

在CentOS 上安装 FFmpeg 方法一&#xff1a;在线安装 添加 EPEL 和 RPM Fusion 源&#xff1a; sudo yum install epel-release sudo yum install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm安装 FFmpeg&#xff1a; sudo yu…...

Python------Pandas的数据结构

Pandas主要处理以下三个数据结构&#xff1a; 序列(Series) 数据帧(DataFrame) 面板(Panel) 数据结构维数描述序列11维结构&#xff0c;值可变&#xff0c;大小不变数据帧22维结构&#xff0c;值可变&#xff0c;大小可变&#xff0c;表结构面板3维标记&#xff0c;值可变…...

矩阵碰一碰发视频源码技术解析,支持OEM

一、引言 随着近场通信技术的不断发展&#xff0c;矩阵碰一碰发视频技术作为一种创新的交互方式&#xff0c;逐渐在各个领域崭露头角&#xff0c;如智能营销、展览展示、教育科普等场景中都有着广泛的应用前景。通过将多个碰一碰设备或感应区域组成矩阵形式&#xff0c;用户能够…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...