寒假学习记录17:包管理器(包管理工具)

概念

        包(package)

                包含元数据的库,这些元数据包括:名称,描述,git主页,许可证协议,作者,依赖.....

        库(library,简称lib)

                以一个或多个模块组成的完整功能块,为开发中某一方面的问题提供完整的解决方案

        模块(module)

                通常以单个文件形式存在的功能片段,入口文件通常称之为入口模块主模块

                                                        

背景

        CommonJS的出现,使node环境下的JS代码可以用模块更加细粒度的划分。一个类,一个函数,一个对象,一个配置等待均可以作为模块,这种细粒度的划分,是开发大型应用的基石

        为了解决在开发过程中遇到的常见问题,比如加密,提供常见的工具方法,模拟数据等待,一时间,在前端社区涌现了大量的第三方库。这些库使用CommonJS标准书写而成,非常容易使用

        然而,在下载使用这些第三方库的时候,遇到难以处理的问题:

                1.下载过程繁琐

                2.如果该库需要依赖其他库,还需要按照要求先下载其他库

                3.开发环境中安装大量的库如何在生产环境中还原,又如何区分

                4.更新一个库极度麻烦

                5.自己开发的库,如何在下一次开发使用

        以上问题,就是包管理工具需要解决的问题

前端包管理器

        npm

                npm  -->  node package manager        (node包管理器)

                        npm之所以要运行在node环境,而不是浏览器环境,根本原因是因为浏览器环境无法提供下载,删除,读取本地文件的功能。而node属于服务器环境,没有浏览器的种种限制,理论上可以完全掌控运行node的计算机

                npm由三部分组成
                        1.registry:入口

                                可以把它想象成一个庞大的数据库

                                第三方库的开发者,将自己的库按照npm的规范,打包上传到数据库中

                                使用者通过统一的地址下载第三方包

                        2.官网

                                查询包

                                注册,登录,管理个人信息

                        3.CLI:command-line  interface    命令行接口

                                安装好npm后,通过CLI来使用npm的各种功能

                npm6之后,npm和yarn几乎就没有差距了

        yarn

                它仍然使用npm的registry,不过提供了全新CLI来对包进行管理

                        npm的问题

                                1.依赖目录嵌套层次深

                                2.下载速度慢

                                3.控制台输出繁杂

                                4.工程移植问题

                        yarn的优点

                                使用了扁平的目录结构

                                并行下载

                                使用本地缓存

                                控制台仅输出关键信息

                                使用yarn-lock文件记录确切依赖

                                增加了某些功能强大的命令

                                让既有的命令更加语义化

                                本地安装的CLI工具可以使用yarn直接启动

                                将全局安装的目录当作一个普通的工程,生成package.json文件,便于全局安装移植

        cnpm

                为解决国内用户连接npm registry缓慢的问题,淘宝搭建了自己的registry,即淘宝npm镜像源

                过去,npm没有提供修改registry的功能,因此,淘宝提供了一个CLI工具即cnpm,它支持除了npm publish以外的所有命令,只不过连接的是淘宝镜像源

                如今,npm已经支持修改registry了,可能cnpm唯一的作用就是和npm共存

                        即如果要使用官方源,则使用npm,如果使用淘宝源,则使用cnpm

        pnpm

                pnpm是一种新起的包管理器

                        pnpm优势

                                目前,安装效率高于npm和yarn

                                极其简洁的node_modules目录

                                避免了开发时使用间接依赖的问题

                                能极大的降低磁盘空间的占用

                                

                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/683904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第11讲投票创建后端实现

投票创建页面实现 文件选择上传组件 uni-file-picker 扩展组件 安装 https://ext.dcloud.net.cn/plugin?nameuni-file-picker 日期选择器uni-datetime-picker组件 安装 https://ext.dcloud.net.cn/plugin?nameuni-datetime-picker iconfont小图标 https://www.iconfont…

【教3妹学编程-算法题】子集中元素的最大数量

2哥 : 3妹,今年过年收到压岁钱了没呢。 3妹:切,我都多大了啊,肯定没收了啊 2哥 : 俺也一样,不仅没收到,小侄子小外甥都得给,还倒贴好几千 3妹:哈哈哈哈,2叔叔&#xff0c…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Navigation组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Navigation组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Navigation组件 鸿蒙(HarmonyOS)项目方舟框架&#…

Java:性能优化细节01-10

Java:性能优化细节01-10 在Java程序开发过程中,性能优化是一个重要的考虑因素。常见的误解是将性能问题归咎于Java语言本身,然而实际上,性能瓶颈更多地源于程序设计和代码实现方式的不当。因此,培养良好的编码习惯不仅…

(力扣记录)235. 二叉搜索树的最近公共祖先

数据结构&#xff1a;树&#x1f332; 时间复杂度&#xff1a;O(n) 空间复杂度&#xff1a;O(1) 代码实现&#xff1a; class Solution:def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:while True:if p.val < root.val <…

数据的艺术与保障:深入探索OSI模型的表示层

引言 在现代计算机网络中&#xff0c;数据的传输和交换是至关重要的。为了促进不同计算机系统之间的有效通信&#xff0c;国际标准化组织&#xff08;ISO&#xff09;提出了开放系统互连&#xff08;OSI&#xff09;参考模型。该模型定义了网络通信的七个层次&#xff0c;每一…

Python中多种生成随机密码超实用实例

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 前言 密码是信息安全的基石&#xff0c;它用于保护我们的账户、数据和隐私。为了确保密码足够强大&#xff0c;…

我的大数据之路 - 基于HANA构建实时方案的历程

产品内部前期有一个共识&#xff0c;依据业务要求的时效性来选择技术平台&#xff0c;即&#xff1a; 实时类业务&#xff0c;时效性小于2小时&#xff0c;则使用HANA构建。离线类业务&#xff0c;时效性大于2小时&#xff0c;则使用大数据平台构建。 经过五月、六月两月的努…

今日JAVA小练习之复制数组

题目描述 将两个有序数组按照大小顺序复制成一个数组 实现思路 创建新的数组&#xff0c;长度为要复制的两个数组长度之和定义3个初始变量i,p1,p2在循环中依次比较两个数组中元素大小&#xff0c;小的放入新数组若p1小于ns1的长度&#xff0c;则说明在上面while循环中ns1的元…

Redis 的 SETNX

Redis 的 SETNX 命令是一个用于设置键的值的原子性操作。SETNX 表示 "SET if Not eXists"&#xff0c;即当键不存在时才进行设置。该命令可以实现一种简单的分布式锁和限流策略。 SETNX 命令的语法如下&#xff1a; 复制代码 SETNX key value key&#xff1a;要设…

clang前端

Clang可以处理C、C和Objective-C源代码 Clang简介 Clang可能指三种不同的实体&#xff1a; 前端&#xff08;在Clang库中实现&#xff09;编译驱动程序&#xff08;在clang命令和Clang驱动程序库中实现&#xff09;实际的编译器&#xff08;在clang-ccl命令中实现&#xff0…

kafka如何保证消息不丢?

概述 我们知道Kafka架构如下&#xff0c;主要由 Producer、Broker、Consumer 三部分组成。一条消息从生产到消费完成这个过程&#xff0c;可以划分三个阶段&#xff0c;生产阶段、存储阶段、消费阶段。 产阶段: 在这个阶段&#xff0c;从消息在 Producer 创建出来&#xff0c;…

c++阶梯之类与对象(下)

前文&#xff1a; c阶梯之类与对象&#xff08;上&#xff09;-CSDN博客 c阶梯之类与对象&#xff08;中&#xff09;-CSDN博客 c阶梯之类与对象&#xff08;中&#xff09;&#xff1c; 续集 &#xff1e;-CSDN博客 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&a…

Windows注册表的参数,比如: %* %0 %1 %2 %D %L %V %W

Windows注册表的参数,比如: %* %0 %1 %2 %D %L %V %W 参数意义%*代表所有的参数%0, %1第1个&#xff08;文件&#xff09;参数的完整路径&#xff0c;不包含引号。当应用程序是16位时&#xff0c;得到8.3短路径形式&#xff1b;当应用程序是32/64位时&#xff0c;得到长路径。…

【机器学习笔记】3 逻辑回归

分类问题 分类问题监督学习最主要的类型&#xff0c;主要特征是标签离散&#xff0c;逻辑回归是解决分类问题的常见算法&#xff0c;输入变量可以是离散的也可以是连续的 二分类 先从用蓝色圆形数据定义为类型1&#xff0c;其余数据为类型2&#xff1b;只需要分类1次&#x…

寒假 14

1.请编程实现二维数组的杨慧三角 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <unistd.h> int main(int argc, const char *argv[]) {int n;printf("please enter n:");scanf("%d&q…

Java并发基础:SynchronousQueue全面解析!

内容概要 SynchronousQueue的优点在于其直接性和高效性&#xff0c;它实现了线程间的即时数据交换&#xff0c;无需中间缓存&#xff0c;确保了数据传输的实时性和准确性&#xff0c;同时&#xff0c;其灵活的阻塞机制使得线程同步变得简单而直观&#xff0c;适用于需要精确协…

相机图像质量研究(13)常见问题总结:光学结构对成像的影响--鬼影

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

二级 C 语言笔试-15

一、选择题 1. 程序流程图中带有箭头的线段表示的是( )。 A) 图元关系 B) 数据流 C) 控制流 D) 调用关系 2. 下列描述中正确的是( )。 A) 程序就是软件 B) 软件开发不受计算机系统的限制 C) 软件既是逻辑实体&#xff0c;又是物理实体 D) 软件是程序、数据与相关文档的集合 3. …

人类智能与人工智能之间有泰勒公式的味道

人工智能&#xff08;AI&#xff09;与人类智能之间的关系&#xff0c;简单类比为泰勒公式可能并不准确&#xff0c;但在某种程度上或许有些味道。 泰勒公式是一种数学工具&#xff0c;用于将一个函数在某个点附近展开成无穷级数的形式&#xff0c;以近似描述函数的行为。它通过…