前端包管理工具

一、代码共享方案

  • npm 进行发布上传 npmregistry
  • npm 进行安装

二、npm 包管理工具

2.1 介绍

  • 安装 node 的时候自动安装

  • node package manager:Node 包管理工具

  • 可以通过 npm 安装说明已经上传到这个仓库里面了

  • npm 官网查看是否有发布:npmjs.org

2.2 npm的配置文件

  • package.json
  • 记录着项目的名称、版本号、项目描述
  • 项目所依赖的其他库的
  • npm init:自动生成 package.json
  • 手动从零开始创建项目:npm init -y:所有东西都是yes
  • 通过脚手架创建项目:vue create shopping:会搭建好这个项目所需要配置的东西,包括 package.json

2.3 常见的属性

  • name:项目的名称

  • version:项目版本

  • description:描述

  • author:作者

  • license:开源协议

  • private:true

    • npm不能发布它,防止私有项目或模块发布出去的方式
    • main属性:设置程序的入口
  • script:配置脚本命令npm run xxx

  • start、test、stop、restart可以省略run

  • dependencies:开发和生产环境都需要依赖的包:npm i axios

  • devDependencies开发依赖,有一些包在生成环境是不需要的,比如webpack、babel、vue-loader

  • 这个时候通过npm install webpack --save-dev安装到devDependencies属性中

    • 简写:npm install webpack -D
  • peerDependencies:对等依赖,你依赖的一个包,它必须是以另外一个宿主包为前提的

    • element-plus:必须安装vue
  • engines:指定 Node 和NPM 的版本号

  • browserslist:浏览器兼容情况

2.4 semver版本规范

  • X.Y.Z
  • X:主版本号,可能不兼容之前的版本,发生了重大版本更新
    • vue3 不兼容 vue2 版本的一些 api
  • Y:次版本号,增加了新特性和新功能,但是兼容之前的版本
  • Z:修订号,没有新功能,修正了之前的bug
  • x.y.z:明确的版本号
  • ^x.y.z:x 是保持不变的,y 和 z 永远安装最新的版本,后面两者动态
  • ~x.y.z:x 和y 是保持不变的, z 永远安装最新的版本

2.5 npm install 命令

  • 本地/局部安装:在哪个文件夹就安装到哪个文件夹里面,不会添加到环境变量里面

    • 会在当前目录下生成一个node_modules文件夹
    • 又分为
      • 开发依赖: -D
      • 生产依赖
  • 全局安装:npm i webpack -g

    • 必须依赖 webpack-cli -g
    • 一般安装的都是工具包:yarn、webpack
  • 原理

    • 从 远程registry 中进行下载
    • 若本地两个仓库都有 axios
    • 存在缓存的概念,通过算法去找对应的包==》标识符(integrity)
      • package-lock.json
    • package-lock.json:确定死的版本,一般不修改
      • name:项目的名称
      • version:项目的版本
      • lockfileVersion:lock文件的版本
      • requires:使用requires来跟踪模块的依赖关系
      • dependencies:项目的依赖
  • 卸载某个包:npm uninstall webpack npm ininstall axios -D

  • 强制重新build:npm rebuild

  • 清除缓存:npm cache clean

2.6 npm 发布自己的开发包

  • 编写自己的工具/库/框架
  • 必须包含 package.json
  • 除了在github也可以发布在registry
  • 步骤
    • 注册npm账号 https://www.npmjs.com
    • 在vscode里面登录:npm login
    • 修改 package.json
    • 发布到 npm registry上:npm publish
    • 更新仓库
      • 修改版本号:最好符合 semver 规范
      • 重新发布
    • 删除发布的包:npm unpublish
    • 让发布的包过期:npm deprecate

三、 yarn 工具

  • 早期的 npm 存在安装依赖速度缓慢、版本依赖混乱等问题

  • npm5 之后进行很多升级和改进

  • npm i yarn -g

  • 初始化:yarn init

  • 安装包:yarn add axios

  • 与npm 区别

四、cnpm工具

  • registry 是国外的服务器
  • 淘宝的镜像服务器十分钟更新一次,进行备份
  • 查看npm镜像:npm config get registry
  • 设置npm的镜像:npm config set registry=https://registry.npm.taobao.org
  • 安装一个新的工具:npm install cnpm -g
  • 设置cnpm的镜像:cnpm config set registry=https://registry.npm.taobao.org

五、npx工具

  • npx是 npm5.2之后自带的一个命令

  • 在安装项目之前,先创建package.json

    • 手动创建:npm init -y
    • npm i webpack-cli -D(开发依赖,打包)
    • 在里面script执行命令,优先在modules的bin里面找
    • 全局安装webpack:npm i webpack@3.6.0 -g
  • 使用 npx 直接(优先)在node_modules下面的bin文件中优先查找

    • webpack 对源代码进行打包
    • 默认情况下运行全局的
  • 局部命令的执行

    • 必须进入到目录,在终端使用如下命令 ./node_modules/.bin/webpack --version
    • 修改scripts脚本:“webpack”: “webpack --version”
    • 使用npx:npx webpack --version

六、pnpm 使用和原理

  • performant 高性能的 npm

    • 快速/高效/严格/支持 monorepos /严格
    • 速度快、节省磁盘空间
  • vue 源码已经开始使用 pnpm 了

  • 使用的公司:Microsoft、ByteDance

  • 依赖包将被存放在一个统一的位置

    • 同一依赖包使用相同的版本,磁盘上只有依赖包这一份文件
    • 同一依赖包需要使用不同的版本,仅有版本之间不同的文件会被存储起来
    • 所有文件都保存在硬盘上的统一的位置
      • 建立硬链接,不会占用额外的硬盘空间
  • pnpm 创建非扁平的 node_modules目录873

  • 安装npm install pnpm -g

  • 当使用npm或yarn安装依赖包时,所有软件包都将被提升到node_modules的根目录下
    a. 源码可以访问本不属于当前项目所设定的依赖包

  • 通过硬链接和软连接的方式连接起来

  • 整个结构嵌套的层级有点多,不会随便引入非自己安装的依赖pnpm的存储store

  • 获取对应目录:pnpm store path

  • 从store中删除当前未被引用的包来释放store的空间:pnpm store prune

七、硬链接/软连接

  • 硬链接:电脑文件系统中的多个文件平等地享有同一个文件存储单元
  • 符号链接:一种特殊的文件,包含有一条绝对/相对路径指向其他文件或者目录的引用
  • copy aaa.js ffff.js----------文件拷贝
    • 会在硬盘中复制出来一份新的文件数据
  • mklink /H bbb.js aaa.js----------建立了硬链接
    • bbb.js : 新文件
    • aaa.js:原文件
    • 指向了磁盘中的同一份数据
    • 只能操作文件
  • mklink aaa.js hhh.js-------建立软连接
    • 快捷方式
    • 找到原文件
    • 再找到磁盘中的数据

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

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

相关文章

JAVAEE出街 网络编程(一)

网络编程 一. 网络编程二. 客户端与服务器2.1 一问一答2.2 一问多答2.3 多问一答2.4 多问多答 三. TCP与UDP的特点 一. 网络编程 网络编程本质上就是学习传输层给应用层提供的API,把数据交给传输层,通过一层层的封装将数据通过网卡传输出去。 二. 客户端…

html5实现好看的年会邀请函源码模板

文章目录 1.设计来源1.1 邀请函主界面1.2 诚挚邀请界面1.3 关于我们界面1.4 董事长致词界面1.5 公司合作方界面1.6 活动流程界面1.7 加盟支持界面1.8 加盟流程界面1.9 加盟申请界面1.10 活动信息界面 2.效果和源码2.1 动态效果2.2 源码目录结构 源码下载 作者:xcLei…

《WebKit 技术内幕》之四(4): 资源加载和网络栈

4.实践:高效的资源使用策略 4.1 DNS和TCP连接 DNS解析和TCP连接占用大量的时间,可以从以下几个方面优化: 减少连接的重定向,有些网页中使用了大量的重定向,可能还会有很多次重定向,这不仅要求浏览器建立…

使用 FFmpeg 轻松调整视频的大小/缩放/更改分辨率

在此 FFmpeg 教程中,我们学习使用 FFmpeg 的命令行工具更改视频的分辨率(或调整视频的大小/缩放)。 更改视频的分辨率(也称为调整大小或缩放)是视频编辑、处理和压缩中非常常见的操作。对于 ABR 视频流尤其如此&#…

HCIP BGP选路实验

拓扑图&IP划分如下: 第一步,配置IP&环回地址 以R1为例,R2~R8同理 interface GigabitEthernet 0/0/0 ip address 12.0.0.1 24 interface LoopBack 0 ip address 10.0.0.1 24 第二步:对AS200网段配置OSPF协议 以R2为例&a…

[C#]C# winform部署yolov8目标检测的openvino模型

【官方框架地址】 https://github.com/ultralytics/ultralytics 【openvino介绍】 OpenVINO(Open Visual Inference & Neural Network Optimization)是由Intel推出的,用于加速深度学习模型推理的工具套件。它旨在提高计算机视觉和深度学…

【使用 UCF101 数据集】C3D 模型准备与模型训练

一、前言 本文章将对 C3D 模型进行解析,对里面的模型结构进行详解,最后使用UCF101 数据集对该模型进行实战,在进行推理时能够正确识别出未知视频中里面正确的类别。 二、目录 三、相关内容 四、详细介绍 【使用 UCF101 数据集】C3D 模型准…

HCIA——20应用层:C/S、P2P、peer

学习目标: 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点,理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

基于LabVIEW的压力传感器测试系统

摘要 现在各类压力传感器已广泛应用于各种工业自控环境,对压力传感器的研究 及应用,既可以体现一个国家的科技发展水平,又可以提升国家的综合国力,还 可以在丰富、方便和智能化人们的生活方面做出重要的贡献。而针对不同仪器组 成…

电脑监视软件(2024年最新电脑监控软件推荐)

在当今数字化的时代,电脑已经成为了我们生活和工作中不可或缺的工具。然而,随着电脑使用的普及,人们对于电脑安全的关注也日益增强。 为了保护个人隐私和企业机密,电脑监视软件应运而生。 本文将为您介绍2024年最新电脑监控软件的…

GO 中高效 int 转换 string 的方法与高性能源码剖析

文章目录 使用 strconv.Itoa使用 fmt.Sprintf使用 strconv.FormatIntFormatInt 深入剖析1. 快速路径处理小整数2. formatBits 函数的高效实现 结论 Go 语言 中,将整数(int)转换为字符串(string)是一项常见的操作。 本文…

MySQL---单表查询综合练习

创建emp表 CREATE TABLE emp( empno INT(4) NOT NULL COMMENT 员工编号, ename VARCHAR(10) COMMENT 员工名字, job VARCHAR(10) COMMENT 职位, mgr INT(4) COMMENT 上司, hiredate DATE COMMENT 入职时间, sal INT(7) COMMENT 基本工资, comm INT(7) COMMENT 补贴, deptno INT…

linux切换root用户su - root和su root的区别

这里说一下login shell和 no login shell的区别 通过tty客户端登陆的shell就是login shell,通过在图形界面使用ctrlshiftt的方式新建的shell是no login shell login shell 主要读取两个配置文件/etc/profile和~/.bash_profile no login shell 读取的文件和顺序为&am…

手把手教你薅熊链Berachain测试网空投

Berachain,这名字响当当!是基于流动性证明的高性能区块链,结合了Tendermint和流动性共识证明,还采用了Celestia作为DA层。这速度快、成本低、确定性高,简直就是未来的大热门!你知道吗?这家公司可…

金融——规避容易造成金融系统性风险的项目

金融的关联性太强,容易造成很多社会问题, 改变,必须建立在有效规避风险之上 蚂蚁金服上市被叫停的原因? 答: p2p造成哪些恶劣影响? 答: 信用体系 和 抵押体系 都各自存在优劣? 答…

AI写作软件哪个好?国内AI写作软件排行榜前十名

近年来,AI写作软件的出现为写作领域提供更多的便利和资源。这些软件利用机器学习和自然语言处理等技术,能够自动生成文章、写作建议和编辑指导,为写作者提供了极大的便利。然而,市场上的AI写作软件琳琅满目,究竟哪些软…

管理信息系统知识点复习

目录 一、名词解释题1.企业资源规划(ERP)2.面向对象方法:3.电子健康:4.供应链5.数据挖掘6.“自上而下”的开发策略:7.业务流程重组8.面向对象:9.决策支持系统10.聚类11.集成开发环境:12.供应商协同13.数据仓库14.深度学…

ISA Server 2006部署网站对比nginx

2024年了,我还是第1次使用ISA Server 。没办法在维护一个非常古老的项目。说到ISA Server可能有小伙们不清楚,但是说到nginx大家应该都知道吧。虽然他们俩定位并不相同,但是本文中提到的需求,他俩是都可以实现。 网上找的到的教程…

面试问题记录【深圳,共三面,A 轮公司】

问题记录 一面: 自我介绍项目介绍项目中用到的本地缓存是否涉及数据不一致问题,如何解决?项目中用到了 RTree 和普通的 B 树和 B树的数据结构的区别是什么?mysql 数据库中几种日志的用法和区别?redis 中缓存三兄弟存…

【数据结构】详谈队列的顺序存储及C语言实现

循环队列及其基本操作的C语言实现 前言一、队列的顺序存储1.1 队尾指针与队头指针1.2 基本操作实现的底层逻辑1.2.1 队列的创建与销毁1.2.2 队列的增加与删除1.2.3 队列的判空与判满1.2.4 逻辑的局限性 二、循环队列2.1 循环队列的实现逻辑一2.2 循环队列的实现逻辑二2.3 循环队…