寒假学习记录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目录

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

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

                                

                

相关推荐

  1. pnpm管理

    2024-02-16 14:14:01       68 阅读
  2. 前端-管理

    2024-02-16 14:14:01       45 阅读
  3. npm管理

    2024-02-16 14:14:01       44 阅读
  4. npm管理工具

    2024-02-16 14:14:01       44 阅读
  5. 前端管理工具

    2024-02-16 14:14:01       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-16 14:14:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-16 14:14:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-16 14:14:01       82 阅读
  4. Python语言-面向对象

    2024-02-16 14:14:01       91 阅读

热门阅读

  1. pytorch dataloader 中collate_fn是什么

    2024-02-16 14:14:01       50 阅读
  2. CentOS7 修改网络配置方法

    2024-02-16 14:14:01       50 阅读
  3. python34-Python列表和元组之加法

    2024-02-16 14:14:01       53 阅读
  4. BDD之Gherkin(小黄瓜)语法

    2024-02-16 14:14:01       58 阅读
  5. 防火墙工作模式详解

    2024-02-16 14:14:01       52 阅读
  6. comfyui视频转绘学习笔记

    2024-02-16 14:14:01       60 阅读
  7. vue3 vue+vite+ts 环境变量配置

    2024-02-16 14:14:01       49 阅读
  8. leetcode 365. 水壶问题【裴蜀定理】

    2024-02-16 14:14:01       59 阅读
  9. vs 开发者powershell安装git

    2024-02-16 14:14:01       52 阅读
  10. Validation-参数校验框架

    2024-02-16 14:14:01       50 阅读