npm改成淘宝镜像与cnpm区别


之前一直以为npm改成淘宝镜像后和cnpm本质是一样的,今天在研究package-lock.json时候发现,这两者还是有很大区别。特记录下:

先贴下截图对比:

1.使用cnpm安装lodash

npm镜像修改失败(npm改成淘宝镜像与cnpm就是一样的了吗)(1)


2.使用改成淘宝仓库的npm安装lodash

npm镜像修改失败(npm改成淘宝镜像与cnpm就是一样的了吗)(2)


通过截图会发现:

npm ERR! code EINVALIDPACKAGENAME npm ERR! Invalid package name "_lodash@4.17.11@lodash": name cannot start with an underscore; name can only contain URL-friendly characters


但是使用cnpm uninstall lodash后,不会报错,此时会删掉cnpm安装的两个包中其中一个既非下划线(正常名字)的包。剩余的那个包是可以正常通过鼠标点击打开的。然后在文件中require会报错,提示没有这个包。

  • 先执行了cnpm install lodash,然后手动删除cnpm安装的两个包中其中一个即下划线(非正常名字)的包,剩余的那个包,发现无法通过鼠标点击打开了。然后在文件中require会报错,提示没有这个包。

npm镜像修改失败(npm改成淘宝镜像与cnpm就是一样的了吗)(3)

  • 所以,cnpm安装的的2个模块,两者应该存在引用关系,正常名字模块是非正常名字模块的索引,两者都必须存在才可以使用。但是npm安装下来就不存在这种情况了,因为只有一个正常名字模块。
  • 实测发现,尽管使用npm改成淘宝仓库,发现安装速度还是远远比cnpm慢(当模块比较多的时候)。可能应该和cnpm安装的文件结构有关系吧。



,