1.npm 和 cnpm(
npm更换淘宝镜像的方法
安装:npm install --global cnpm
使用: cnpm install --global electron
(#所有的npm替换成cnpm,包括init命令)
)
国内使用 npm 速度很慢,你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org(不想安装cnpm,临时使用)
$ npm config set registry https://registry.npm.taobao.org(永久使用淘宝镜像下载)
2.配置完成后,通过下列命令查看
npm config list
3.使用 cnpm 命令来安装模块了:
$ cnpm install [name]
4.NPM(全称为Node Package Manager,是一个基于Node.js的包管理器,也是整个Node.js社区最流行、支持的第三方模块最多的包管理器)是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了
使用npm命令来升级npm: npm install npm -g
5. React 还可以使用 Node 进行服务器渲染,或使用 React Native 开发原生移动应用
6.
NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。
-
NPM提供了很多命令,例如
install
和publish
,使用npm help
可查看所有命令。 -
使用
npm help <command>
可查看某条命令的详细帮助,例如npm help install
。 -
在
package.json
所在目录下使用npm install . -g
可先在本地安装当前命令行程序,可用于发布前的本地测试。 -
使用
npm update <package>
可以把当前目录下node_modules
子目录里边的对应模块更新至最新版本。 -
使用
npm update <package> -g
可以把全局安装的对应命令行程序更新至最新版。 -
使用
npm cache clear
可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。 -
使用
npm unpublish <package>@<version>
可以撤销发布自己发布过的某个版本代码。
7.
cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm。
npm安装插件是从国外服务器下载,受网络影响大,可能出现异常,如果npm的服务器在中国就好了,于是淘宝团队干了这事。来自官网:“这是一个完整 npmjs.org镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。”
8.
Yarn一开始的主要目标是解决上一节中描述的由于语义版本控制而导致的npm安装的不确定性问题。虽然可以使用npm shrinkwrap来实现可预测的依赖关系树,但它并不是默认选项(Node.js v8.0 后,自带的 npm 也升级到了5.0,新增 package-lock.json 来记录依赖树信息,进行依赖锁定,并使用新的 shrinkwrap 格式,不能再通过修改package.json 文件然后执行npm install 来安装依赖,需要使用npm install xxx@yy安装,不能再通过修改package.json 文件然后执行npm install 来安装依赖,需要使用npm install xxx@yy安装,升了安装速度,增加了并发
注意:直接改 package.json 文件相应模块的版本号,再执行npm install不会更新了(好可怕),你只能手动用npm install xxx@yy指定版本号来安装,然后它会自动更新 package-lock.json 文件。
如果需要改 package.json 文件,执行npm install时,可以先把package-lock.json 删除,执行npm install)。
Yarn采取了不同的做法。每个yarn安装都会生成一个类似于npm-shrinkwrap.json的yarn.lock文件,而且它是默认创建的。除了常规信息之外,yarn.lock文件还包含要安装的内容的校验和,以确保使用的库的版本相同。
yarn是经过重新设计的崭新的npm客户端,它能让开发人员并行处理所有必须的操作,并添加了一些其他改进。
运行速度得到了显著的提升,整个安装时间也变得更少
像npm一样,yarn使用本地缓存。`与npm不同的是,yarn无需互联网连接就能安装本地缓存的依赖项,它提供了离线模式`。
允许合并项目中使用到的所有的包的许可证
通常情况下不建议通过npm进行安装。npm安装是非确定性的,程序包没有签名,并且npm除了做了基本的SHA1哈希之外不执行任何完整性检查,这给安装系统程序带来了安全风险。
yarn更简洁的输出:npm的输出信息比较冗长。在执行npm install 的时候,命令行里会不断地打印出所有被安装上的依赖。相比之下,Yarn 简洁太多:默认情况下,结合了emoji直观且直接地打印出必要的信息,也提供了一些命令供开发者查询额外的安装信息。
yarn多注册来源处理:所有的依赖包,不管他被不同的库间接关联引用多少次,安装这个包时,只会从一个注册来源去装,要么是 npm 要么是 bower, 防止出现混乱不一致。
注意:yarn
这么多优点,我们为什么还要npm
呢
搞清楚三者下载包(依赖)的本质结果:
首先向对应的node_module文件夹下面下载包(如果你非要下到全局,那么再见)
再然后是json文件中添加对应的依赖字段,确定是线上依赖还是开发依赖
只要做到这两者 你就下包成功
总结就是 只要结果 过程管你是啥
使用yarn下载过的包,再使用npm cnpm下载 会重复下载,删除之前的包
puppeteer这个包所依赖的mini版谷歌浏览器使用cnpm下载就可以完美解决
prerender-spa-plugin这个包依赖上面的木偶戏 puppeteer这个包,也可以用cnpm下载
混合使用包管理器切记,不要重复下载依赖,npm cnpm下载依赖,一定要添加注明是什么依赖,是否全局安装
yarn和npm i两者,选择前者,原因在上面有提到,总体来说,yarn是不二选择,但是其他两者也不可缺少,比如electron这个依赖,使用cnpm就可以完美一键安装