yarn & npm

# node升级

1、window系统升级node就只有到node官网下载window安装包来覆盖之前的node

2、mac升级node版本 npm i -g n n 12.9.1 //指定版本升级 n latest //安装最新版本 n stable //安装最稳定的版本

强烈推荐使用 nvm

nvm常用命令

命令 说明

nvm list nrm ls 查看已经安装的版本
nvm list installed 查看已经安装的版本
nvm list available 查看网络可以安装的版本
nvm arch 查看当前系统的位数和当前nodejs的位数
nvm install [arch] 安装制定版本的node 并且可以指定平台 version 版本号 arch 平台
nvm on 打开nodejs版本控制 (在第一次使用nvm安装node后,要记得使用 nvm use 切换下node版本,以及用 nvm on 打开nodejs版本控制,不然这时候node和npm也都不可用。)
nvm off 关闭nodejs版本控制
nvm proxy [url] 查看和设置代理
nvm node_mirror [url] 设置或者查看setting.txt中的node_mirror,如果不设置的默认是 https://nodejs.org/dist/
nvm npm_mirror [url] 设置或者查看setting.txt中的npm_mirror,如果不设置的话默认的是:https://github.com/npm/npm/archive/.
nvm uninstall 卸载制定的版本
nvm use [version] [arch] 切换制定的node版本和位数
nvm root [path] 设置和查看root路径
nvm version 查看当前的版本

# 升级包

方式1

npm install -g npm-check    //安装全局的包
npm update <name> -g        //全部安装不建议用
npm update <name>           //单个安装
1
2
3

方式2

yarn global add npm-check-updates  //安装全局的包

//ncu  查看所有可以安装的包
sudo ncu -u <name>  //这个只是改变package里面的版本 不会更新包
//所以要sudo ncu -u <name> && sudo yarn 
1
2
3
4
5

方式3推荐

yarn upgrade-interactive --latest //需要手动选择升级的依赖包,按空格键选择,a 键切换所有,i 键反选选择
1

方式4

yarn upgrade react --latest //yarn upgrade 更新依赖包时yarn.lock更新但package.json不同步更新版本信息,网上说会同步更新,我试了下,未更新,具体看你们
1

# 切换源

# yarn 切换源

1、查看一下当前源 yarn config get registry 2、切换为淘宝源 yarn config set registry https://registry.npm.taobao.org 3、或者切换为自带的 yarn config set registry https://registry.yarnpkg.com

# npm 切换源

1、全局配置切换到淘宝源 npm config set registry https://registry.npm.taobao.org
2、检测是否切换到了淘宝源 npm info underscore

# 淘宝 NPM 镜像站切换新域名

淘宝为了提供更稳定、更安全、更符合国家法律法规要求的镜像服务(说人话就是怕国家找茬所以要低调), 将要更换淘宝npm源的服务器,并且老的域名 npm.taobao.org 和 registry.npm.taobao.org 将不再使用。

2022年5月31日0时,这两个老域名将会停止服务,截至目前,通过老域名安装npm包已经会被301到新域名 registry.npmmirror.com

Web 站点:https://npmmirror.com (opens new window)

Registry Endpoint:https://registry.npmmirror.com (opens new window)

可能受到的影响和处理方式

  • 企业用户需要联系 网管/IT/SRE 更新防火墙白名单。
  • cnpm 自身的 CLI,我们会对每个大版本都发个 patch 去更新,开发者重新安装即可。
  • nrm 等工具,需要提 PR 去更新内置的域名。
  • 一些开发者自己封装的工具,如 egg-init,需要维护者自行提 PR 去更新。
  • 存量应用的 lock 文件,开发者需要自行执行 sed 等指令去替换或重新生成。
  • 本地 npmrc 里面的 registry 地址,(如果有,则)需要开发者自行更新。
  • 平台应用里面写死的,需开发者自己更新并部署。

知乎 阿里 (opens new window)

# 你必须知道的yarn

yarn的起源 (opens new window)已经解释了为什么要创建一个新的javascript包管理器, 这里笔者也推荐大家从npm切换为yarn。npm4就不说了,速度太慢了,npm5借鉴了很多yarn的机制,比如简单的版本锁、重写cache模块等,减少了与yarn的差距。 但依然有些地方做的不如yarn,这篇文章 (opens new window)记录了npm5和yarn的实验对比,结论是:在没有缓存时,yarn和npm5速度差不多;在有缓存时,yarn比npm5快2倍。

# yarn优势

以下针对npm5前:

  • yarn 离线安装。 下载的时候 Yarn 缓存了所有的包以至于不需要再次从网络下载
  • yarn并行下载,使得时间更快。 通过并行操作最大限度地提高资源利用率,以至于再次下载的时候安装时间比之前更快。npm5之前是等上一个安装完后再执行下一个,串行下载。
  • yarn锁包yarn-lock,保证引用包正确。 yarn.lock 文件准确的锁定了所有被下载和项目依赖的包版本。通过这个文件,你能确定你的工程师团队的每一位成员都能安装准确的包,并且可以更容易的部署,而没有意外 bug出现。

# yarn指令

* `yarn bin`, 打印出执行脚本的位置,可以被yarn run执行。相当于npm bin
* `yarn login/yarn publish` npm登录和发布。相当于npm login/npm publish
* `yarn cache clean`,清除缓存,相当于npm cache clean。
* `yarn list` 列出当前所有依赖的包
* `yarn config list` 显示所有配置设置
1
2
3
4
5

# npm 发布包

# 发布

npm publish

很多软件在正式发布前都会发布一些预览版或者测试版,一般都叫“beta版”或者 “rc版”,特别是开源软件,甚至有“alpha版”,下面来解释一下各个版本的意思。

alpha版:内部测试版。α是希腊字母的第一个,表示最早的版本,一般用户不要下载这个版本,这个版本包含很多BUG,功能也不全,主要是给开发人员和 测试人员测试和找BUG用的。

beta版:公开测试版。β是希腊字母的第二个,顾名思义,这个版本比alpha版发布得晚一些,主要是给“部落”用户和忠实用户测试用的,该版本任然存 在很多BUG,但是相对alpha版要稳定一些。这个阶段版本的软件还会不断增加新功能。如果你是发烧友,可以下载这个版本。

rc版:全写:Release Candidate(候选版本),该版本又较beta版更进一步了,该版本功能不再增加,和最终发布版功能一样。这个版本有点像最终发行版之前的一个类似 预览版,这个的发布就标明离最终发行版不远了。作为普通用户,如果你很急着用这个软件的话,也可以下载这个版本。

stable版:稳定版。在开源软件中,都有stable版,这个就是开源软件的最终发行版,用户可以放心大胆的用了。

# 发布组织包

类似于 @/babel/core ...

现在npm 下申请一个组织名字,然后执行 npm init --scope=@起好的名字,现在就可以执行 npm publish 发布了

# 删除npm包

npm unpublish --force  // 强制删除
npm unpublish irdd@1.0.6 // 指定版本号
1
2

# npm废弃包

npm包发布后可以对包进行废弃或删除操作,废弃和删除的区别在于:

  • 废弃不会将包或版本从npm仓库删除,仍然可以继续下载安装,并在安装的时候会有警示
  • 删除会将包从npm彻底删除,无法被下载安装

单个废弃 npm deprecate irdd@0.6.38 'critical bug in commonjs package'

整个废弃 npm deprecate irdd 'This package has been deprecated in favour of irdd'

# 参考文章