查看版本
npm -v
yarn -v
查看依赖
yarn list 查看本地依赖
yarn list --depth=0 查看本地依赖,深度为0
yarn list --pattern gulp 筛选出依赖
yarn global list 列出全局安装的依赖
npm ls 查看本地依赖
npm ls -g 查看全局依赖
npm ls —depth 查看本地依赖,深度为0
查看安装路径
查看全局安装路径
yarn global dir
npm config get prefix
查看本地安装路径
npm root
查看依赖包信息
yarn info react 展示依赖包信息,注意,这时依赖包并没有被安装在本地
npm info react
yarn list --depth=0 查看安装过的依赖包和版本
npm ls --depth=0 查看安装过的本地依赖版本
管理配置文件
查看配置key的值
yarn config list 查看当前的配置【yarn没有全局配置】
yarn config get
yarn config delete
yarn config set
通过配置文件
.npmrc文件,对应npm
registry=http://registry.npm.taobao.org/
.yarnrc文件,对应yarn
registry http://registry.npm.taobao.org/
查询镜像[镜像不分本地和全局]
npm config get registry
yarn config get registry
设置镜像[镜像不分本地和全局]
npm config set registry http://registry.npm.taobao.org/
yarn config set registry http://registry.npm.taobao.org/
安装
全局安装
npm install -g webpack
yarn global add webpack
生产环境 dependencies
npm install webpack
yarn add webpack
开发环境 devDependencies
npm install webpack --dev
yarn add webpack --dev
删除
删除全局安装的包
npm uninstall -g webpack
yarn global remove webpack
删除本地安装的包【会更新到package.json】
npm uninstall webpack
yarn uninstall webpack
全局yarn
和 npm 在全局安装操作时需要使用 -g 或者 --global 标志不同,Yarn 命令需要用 global 作为前缀。和 npm 一样,具体项目的依赖性不应该全局安装。
global 前缀仅适用于 yarn add,yarn bin,yarn list 和 yarn remove、upgrade、upgrade-interactive。除了 yarn add,这些命令都和 npm 命令一样。
npm和yarn设置镜像会冲突吗
尝试回答:不会,用什么工具就用哪个配置的镜像
以上说法不对,实践是如果npm和yarn都设置过镜像,yarn会使用npm设置的镜像,npm还是使用npm的,不被yarn影响
实际操作结果如下:
1、npm和yarn都没有设置过源
➜ eslintTest git:(master) ✗ yarn config get registry
https://registry.yarnpkg.com
➜ eslintTest git:(master) ✗ npm config get registry
https://registry.npmjs.org/
yarn进行安装时,会按照yarn的官方源下载并生成yarn.lock文件
npm进行安装时,会按照npm的官方源下载并生成package-lock.json文件
2、yarn设置过源,npm没有设置过源
➜ eslintTest git:(master) ✗ yarn config get registry
http://registry.npm.taobao.org/
➜ eslintTest git:(master) ✗ npm config get registry
https://registry.npmjs.org/
yarn 安装,会按照yarn设置的源进行安装
npm安装,会按照默认npm源进行安装
3、yarn和npm都手动设置源,且设置的不同时
例如,yarn设置源为淘宝源,npm设置官方源
yarn config set registry http://registry.npm.taobao.org/
npm config set registry https://registry.npmjs.org
查看源
➜ eslintTest git:(master) ✗ yarn config get registry
http://registry.npm.taobao.org/
这里要注意,虽然返回的是yarn自己设置的源,但是用yarn config list看一下,会发现,yarn config 和 npm config 都被列了出来,且npm config跟在yarn config后面,
➜ eslintTest git:(master) ✗ yarn config list
yarn config v1.22.10
info yarn config
{
...
registry: 'http://registry.npm.taobao.org/',
'strict-ssl': true,
'user-agent': 'yarn/1.22.10 npm/? node/v12.14.1 darwin x64',
lastUpdateCheck: 1618542996533
}
info npm config
{
...
'zmq-prebuilt-binary-host-mirror': 'https://npm.taobao.org/mirrors/zmq-prebuilt/v{version}',
'//registry.npmjs.org/:_authToken': 'd32a8004-6887-4f77-a638-c75496a138ac',
registry: 'https://registry.npmjs.org'
}
用yarn安装时,可以看到,是使用了npm设置的源
用npm安装,也是使用了npm设置的源。
以上实践证明,如果yarn和npm同时设置了源,不管先后顺序,npm设置的源会影响yarn,但是yarn不会影响npm
lock文件的作用
yarn.lock 中会准确的存储每个依赖的具体版本信息,以保证在不同机器安装可以得到相同的结果。
下面以@babel/code-frame为例,看看yarn.lock 中会记录哪些信息。
- 第一行 "@babel/code-frame@7.0.0-beta.54" 包的name和语义化版本号,这些都来自package.json中的定义。
- version 字段,记录的是一个确切的版本。
- resolved 字段记录的是包的URL地址。
- dependencies 字段记录的是当前包的依赖,即当前包在 package.json 的 dependencies 字段中的所有依赖。
Yarn 在安装期间,只会使用当前项目的 yarn.lock 文件(即 顶级 yarn.lock 文件),会忽略任何依赖里面的 yarn.lock 文件。在顶级 yarn.lock 中包含需要锁定的整个依赖树里全部包版本的所有信息。
yarn.lock文件是在安装期间,由 Yarn 自动生成的,并且由yarn来管理,不应该手动去更改,更不应该删除yarn.lock文件,且要提交到版本控制系统中,以免因为不同机器安装的包版本不一致引发问题。(也就是说,只要提交了yarn.lock文件,别人就会按照这个里面的内容进行安装,设置registry不会影响安装源)
实践如下:
1、去掉npm的源、设置yarn的源为公司内部私有源
npm config delete registry
yarn config set registry http://private.r.npm.com
2、安装公司的私有包
yarn add privatePackage
会看到生成的yarn.lock文件中,源为私有源
3、指定yarn的源为淘宝源,删除node_modules重新安装
yarn config set registry http://registry.npm.taobao.org/
如果按照新的源安装肯定会报错,因为淘宝源没有公司的私有包,但是并没有报错,node_modules也都安装成功了,yarn.lock相比之前也并没有修改。说明,只要指定了yarn.lock,就会按照yarn.lock中的内容区安装,和其他的配置没有关系了。因此可以使用这个文件来防止不同机器安装的包版本不一致。
➜ eslintTest git:(master) ✗ yarn
yarn install v1.22.10
[1/4] 🔍 Resolving packages...
success Already up-to-date.
✨ Done in 0.14s.
生成lock文件后,安装的时候,install命令后跟的--registry还会影响源吗?
通过上面的例子,发现不会影响,但是如果是新增包的话会影响
快捷管理镜像
用nrm快速管理npm的镜像,不过不太必要,毕竟切换源不是很高频的操作
yarn和npm的区别
https://juejin.cn/post/6844903582903320589
参考
1、前端工程师应该知道的yarn知识
https://juejin.cn/post/6844903981668368392
查看版本
npm -v
yarn -v
查看依赖
yarn list 查看本地依赖
yarn list --depth=0 查看本地依赖,深度为0
yarn list --pattern gulp 筛选出依赖
yarn global list 列出全局安装的依赖
npm ls 查看本地依赖
npm ls -g 查看全局依赖
npm ls —depth 查看本地依赖,深度为0
查看安装路径
查看全局安装路径
yarn global dir
npm config get prefix
查看本地安装路径
npm root
查看依赖包信息
yarn info react 展示依赖包信息,注意,这时依赖包并没有被安装在本地
npm info react
yarn list --depth=0 查看安装过的依赖包和版本
npm ls --depth=0 查看安装过的本地依赖版本
管理配置文件
查看配置key的值
yarn config list 查看当前的配置【yarn没有全局配置】
yarn config get
yarn config delete
yarn config set
通过配置文件
.npmrc文件,对应npm
registry=http://registry.npm.taobao.org/
.yarnrc文件,对应yarn
registry http://registry.npm.taobao.org/
查询镜像[镜像不分本地和全局]
npm config get registry
yarn config get registry
设置镜像[镜像不分本地和全局]
npm config set registry http://registry.npm.taobao.org/
yarn config set registry http://registry.npm.taobao.org/
安装
全局安装
npm install -g webpack
yarn global add webpack
生产环境 dependencies
npm install webpack
yarn add webpack
开发环境 devDependencies
npm install webpack --dev
yarn add webpack --dev
删除
删除全局安装的包
npm uninstall -g webpack
yarn global remove webpack
删除本地安装的包【会更新到package.json】
npm uninstall webpack
yarn uninstall webpack
全局yarn
和 npm 在全局安装操作时需要使用 -g 或者 --global 标志不同,Yarn 命令需要用 global 作为前缀。和 npm 一样,具体项目的依赖性不应该全局安装。
global 前缀仅适用于 yarn add,yarn bin,yarn list 和 yarn remove、upgrade、upgrade-interactive。除了 yarn add,这些命令都和 npm 命令一样。
npm和yarn设置镜像会冲突吗
尝试回答:不会,用什么工具就用哪个配置的镜像
以上说法不对,实践是如果npm和yarn都设置过镜像,yarn会使用npm设置的镜像,npm还是使用npm的,不被yarn影响
实际操作结果如下:
1、npm和yarn都没有设置过源
➜ eslintTest git:(master) ✗ yarn config get registry
https://registry.yarnpkg.com
➜ eslintTest git:(master) ✗ npm config get registry
https://registry.npmjs.org/
yarn进行安装时,会按照yarn的官方源下载并生成yarn.lock文件
npm进行安装时,会按照npm的官方源下载并生成package-lock.json文件
2、yarn设置过源,npm没有设置过源
➜ eslintTest git:(master) ✗ yarn config get registry
http://registry.npm.taobao.org/
➜ eslintTest git:(master) ✗ npm config get registry
https://registry.npmjs.org/
yarn 安装,会按照yarn设置的源进行安装
npm安装,会按照默认npm源进行安装
3、yarn和npm都手动设置源,且设置的不同时
例如,yarn设置源为淘宝源,npm设置官方源
yarn config set registry http://registry.npm.taobao.org/
npm config set registry https://registry.npmjs.org
查看源
➜ eslintTest git:(master) ✗ yarn config get registry
http://registry.npm.taobao.org/
这里要注意,虽然返回的是yarn自己设置的源,但是用yarn config list看一下,会发现,yarn config 和 npm config 都被列了出来,且npm config跟在yarn config后面,
➜ eslintTest git:(master) ✗ yarn config list
yarn config v1.22.10
info yarn config
{
...
registry: 'http://registry.npm.taobao.org/',
'strict-ssl': true,
'user-agent': 'yarn/1.22.10 npm/? node/v12.14.1 darwin x64',
lastUpdateCheck: 1618542996533
}
info npm config
{
...
'zmq-prebuilt-binary-host-mirror': 'https://npm.taobao.org/mirrors/zmq-prebuilt/v{version}',
'//registry.npmjs.org/:_authToken': 'd32a8004-6887-4f77-a638-c75496a138ac',
registry: 'https://registry.npmjs.org'
}
用yarn安装时,可以看到,是使用了npm设置的源
用npm安装,也是使用了npm设置的源。
以上实践证明,如果yarn和npm同时设置了源,不管先后顺序,npm设置的源会影响yarn,但是yarn不会影响npm
lock文件的作用
yarn.lock 中会准确的存储每个依赖的具体版本信息,以保证在不同机器安装可以得到相同的结果。
下面以@babel/code-frame为例,看看yarn.lock 中会记录哪些信息。
Yarn 在安装期间,只会使用当前项目的 yarn.lock 文件(即 顶级 yarn.lock 文件),会忽略任何依赖里面的 yarn.lock 文件。在顶级 yarn.lock 中包含需要锁定的整个依赖树里全部包版本的所有信息。
yarn.lock文件是在安装期间,由 Yarn 自动生成的,并且由yarn来管理,不应该手动去更改,更不应该删除yarn.lock文件,且要提交到版本控制系统中,以免因为不同机器安装的包版本不一致引发问题。(也就是说,只要提交了yarn.lock文件,别人就会按照这个里面的内容进行安装,设置registry不会影响安装源)
实践如下:
1、去掉npm的源、设置yarn的源为公司内部私有源
npm config delete registry
yarn config set registry http://private.r.npm.com
2、安装公司的私有包
yarn add privatePackage
会看到生成的yarn.lock文件中,源为私有源
3、指定yarn的源为淘宝源,删除node_modules重新安装
yarn config set registry http://registry.npm.taobao.org/
如果按照新的源安装肯定会报错,因为淘宝源没有公司的私有包,但是并没有报错,node_modules也都安装成功了,yarn.lock相比之前也并没有修改。说明,只要指定了yarn.lock,就会按照yarn.lock中的内容区安装,和其他的配置没有关系了。因此可以使用这个文件来防止不同机器安装的包版本不一致。
➜ eslintTest git:(master) ✗ yarn
yarn install v1.22.10
[1/4] 🔍 Resolving packages...
success Already up-to-date.
✨ Done in 0.14s.
生成lock文件后,安装的时候,install命令后跟的--registry还会影响源吗?
通过上面的例子,发现不会影响,但是如果是新增包的话会影响
快捷管理镜像
用nrm快速管理npm的镜像,不过不太必要,毕竟切换源不是很高频的操作
yarn和npm的区别
https://juejin.cn/post/6844903582903320589
参考
1、前端工程师应该知道的yarn知识
https://juejin.cn/post/6844903981668368392