包管理工具

npm

npm registry仓库

命令

  • npm install 包名: 安装第三方包
  • npm uninstall 包名: 卸载
  • npm init
  • npm install xxx --save-dev | -D: 只在生产环境需要的包
  • npm rebuild: 强制重新build
  • npm cache clean: 清除缓存
  • npm config get cache: 获取缓存目录

package.json

npm init -y


"name": "node",  # 项目名
"version": "1.0.0", # 版本号
"description": "",  # 描述
"main": "text.js",  # 入口文件
"private":true,  # 私有的 npm不能发布

# 脚本命令 npm run xxx
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],  # 关键字,开源时用于其他人搜索
"author": "",  # 作者 开源时
"license": "ISC"  # 协议 开源时
"dependencies":{}  # 无论生产环境还是开发环境都需要依赖的包
'devDependencies':{} # 在生产环境不需要的包,如webpack/babel等  npm install xx --save-dev
'peerDependencies':{} # 对等依赖,如element-pu 依赖Vue3
'engines':{}  # 指定Node npm的版本
'browserslist': {}  # 浏览器兼容 一般放到独立文件中

package-lock.json

作用:固定package.json中安装包的版本,以及包中依赖其他包的版本

  • name:项目名
  • version: 项目版本号
  • lockfileVersion: lock 文件版本
  • requires: 使用requires来跟踪模块的依赖关系

版本号

版本规范 semver:X.Y.Z

X: 主版本号(major)当做了不兼容的API修改(可能不兼容之前的版本)

Y: 次版本号(minor)当做了向下兼容的功能性新增(新功能增加,但是兼容之前的版本)

Z: 修订号(patch)当做了向下兼容的问题修正(没有新功能,修复了之前的版本的bug

  • ^2.0.3:X不变,Y和Z可以浮动
  • 2.0.3:明确的版本
  • ~2.0.3: X和Y不变,Z可以浮动

设置npm源的几种方式

安装nrm

npm install -g nrm

查看npm源列表

nrm ls

使用其他源

nrm use 源名

查看当前使用的源

npm config get registry

修改当前源为淘宝源

npm config set registry https://registry.npmmirror.com/

npm install 原理

npm install xx 会去仓库中查找xx, 找到以后下载到本地目录上的node_modules文件夹下,如果xx包还依赖其他,那么也会依次寻找并下载。

优先去本地缓存Cache中找,找不到再去仓库中下载

cnpm

cnpm,是不支持依赖版本锁定的.

使用方式同npm ,国内镜像,速度快

npx

npx 是 npm5.2.0版本新增的一个工具包,定义为npm包的执行者。局部命令执行

一般如果全局和局部都安装了如yarn, 那么在当前项目中使用 yarn 不会在当前目录的子目录中node_modules中找,所以只会使用全局的yarn

npx 优先会在当前目录node_modules/.bin下找对应的命令 webpack比较特殊

script 参数中如果定义了,那么优先从当前目录node_modules/.bin中寻找命令

yarn

JS包管理工具,弥补早期npm的缺陷, 依赖包结构比较混乱,版本混乱

全局安装

npm install yarn -g

初始化

yarn init -y

安装包

yarn add 包名 --dev/-D

重新安装所有依赖

yarn install --force

卸载包

yarn remove 包名

清除缓存

yarn cache clean

删除node_modules并安装

yarn upgrade

pnpm

npm/yarn/cnpm 存在的痛点:包的体积大

pnpm: 速度快、节省磁盘空间的软件包管理器

快速

pnpm 是同类工具速度的将近 2 倍

高效

node_modules 中的所有文件均克隆或硬链接自单一存储位置

支持单体仓库

pnpm 内置了对单个源码仓库中包含多个软件包的支持

权限严格

命令

  • pnpm install:安装所有依赖包
  • pnpm init
  • pnpm add <pkg>
  • pnpm remove <pkg>
  • pnpm <cmd>
  • pnpm store path
  • pnpm store prune: 裁剪掉不使用的包

硬链接

电脑文件系统中的多个文件平等地共享同一个文件存储单元

删除一个文件名后,还可以用其他名字继续访问该文件

# window
mklink /H aaa.js bbb.js

# mac
ln aaa.js bbb.js

软连接(符号连接)

是一种特殊的文件

以绝对路径或者相对路径的形式指向其他文件或者目录的引用

类似于电脑的快捷方式

# window
mklink 生成文件 源文件

# mac
ln -s aaa.js bbb.js

配置PNPM全局安装路径

配置PNPM全局安装路径
pnpm config set global-bin-dir "D:\pnpm-package\.pnpm-store"

配置PNPM全局bin文件安装路径
pnpm config set cache-dir "D:\pnpm-package\.pnpm-store\cache"

配置PNPM cache路径
pnpm config set state-dir "D:\pnpm-package\.pnpm-store\state"

配置PNPM state路径
pnpm config set global-dir "D:\pnpm-package\.pnpm-store\global"

发布自己的开发包

  • 修改package.json文件

  • 注册: 在NPM官网上完成注册

  • 登录:在本地进行登录

    npm login
    
  • 发布

    npm publish
    
  • 更新仓库

    • 修改版本号
    • 重新发布
  • 删除发布的包

    npm unpublish
    
  • 让发布的包过期

    npm deprecate
    
posted @ 2023-03-16 23:09  转角90  阅读(46)  评论(0编辑  收藏  举报