一、yarn的优点和与npm的区别首先说说为什么不用npm而用yarn。当然,我还没有体会到它的优点,因为我只是用过而已,但是作为一个菜鸟,我还是想用这个更好的技术去探索它。先说说yarn相对于npm的优势:速度快,主要体现在以下两个方面:并行安装:无论是npm还是Yarn在安装包的时候都会进行一系列的工作。npm按照队列执行每一个包,也就是必须等到当前包安装完毕后,再安装下一个包。另一方面,Yarn同步执行所有任务,从而提高性能。离线模式:如果之前安装过软件包,用yarn重新安装时会从缓存中获取,而不是像npm那样从网络下载,锁记录的是实际安装的模块的版本号。每次添加模块时,yarn都会创建或更新yarn.lock文件。这样做可以确保每次提取相同的项目依赖项时,都会使用模块版本。其实npm也可以到处使用相同的模块版本,只是需要开发者执行npmshrinkwrap命令。此命令将生成一个锁定文件。执行npminstall时,会先读取lock文件,就像yarn读取yarn.lock文件一样。npm和yarn的区别在于yarn默认会生成这样一个锁文件,而npm需要通过shrinkwrap命令生成npm-shrinkwrap.json文件。只有当这个文件存在时,包的版本信息才会被记录和更新。更简洁的输出:npm的输出是冗长的。当执行npminstall时,所有安装的依赖都会在命令行上不断打印出来。相比之下,yarn就显得过于简洁了。默认情况下结合emoji可以直观直接的打印出必要的信息,同时也提供了一些命令供开发者查询额外的安装信息。多注册源处理:所有依赖的包,无论被不同的库间接关联了多少次,在安装这个包时,都只会从一个注册源安装,无论是npm还是bower,以防止混淆和不一致。更好的语义:yarn更改了一些npm命令的名称,例如yarnadd/remove,这比npm原来的install/uninstall更易理解和清晰。npmyarnpminstallyarnnpminstallwebpack--saveyarnaddwebpacknpmuninstallwebpack--saveyarnremovewebpacknpminstallwebpack--save-devyarnaddwebpack-devnpmupdate--saveyarn升级查看版本yarn--versionnpm-version(node-v)安装淘宝镜像yarnconfigsetregistry'https://registry.npm.taobao.org'npminstall-gcnpm--registry=http://registry.npm.taobao.org初始化一个项目yarninitcnpminit默认安装项目依赖yarnnpminstall安装一个项目依赖,默认保存到packageyarnadd**npminstall**--save卸载一个项目依赖yarnremove**cnpmuninstall**--save更新一个项目依赖yarnupgrade**cnpmupdate**--save安装全局项目依赖yarnglobaladd**cnpminstall**-g安装特定版本号的项目依赖yarnadd**@cnpminstall**@1.1.1--saverelease,login,logout,一系列npmregistry操作yarnpublish/login/logoutnpmpublish/login/logout运行某个命令yarnrun/testnpmrun/test2.如何从npm转换到yarn环境如果你之前没有使用过yarn,你必须先安装yarnnpminstall-gyarnglobally在现有的npm项目中运行yarn,这相当于yarninstallyarn(运行成功后会在项目根目录下生成yarn.lock文件)。这个时候会报错,什么node_modules/webpack-dev-server/node_modules/ansi-regex/index.js找不到之类的,我绞尽脑汁,找了半天哪里出错了,啊啊啊啊,然后重新运行一下,操!运气好的话,可能不会报错哈哈哈哈插点小知识,这是因为我们的域名是有端口号的,所以一定要从固定的端口号开始,否则页面打不开。所以,mac下查看进程的命令:sudolsof-i:8086;杀死进程的命令:sudokill-924830如果你觉得yarn不适合你,你仍然可以不做任何改变,继续使用npm。如果这个项目中没有人需要使用yarn,那么你可以删除你的yarn.lock文件如果你的同伴在项目中仍然使用npm,而你使用yarn,那么直接提交yarn.lock和package.lock.js就可以了。