npm进阶(一) 更换成淘宝镜像源以及 cnpm

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"一、前言","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"由于","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"node","attrs":{}}],"attrs":{}},{"type":"text","text":"安装插件是从国外服务器下载,受网络限制影响大,速度慢且可能出现异常。所以,(阿里巴巴旗下业务阿里云)干了这事。来自官网介绍:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"这是一个完整 ","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npmjs.org","attrs":{}}],"attrs":{}},{"type":"text","text":" 镜像,你可以用此代替官方版本(只读),同步频 率目前为 10分钟 一次以保证尽量与官方服务同步。","attrs":{}}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"也就是说,我们可以使用阿里布置在国内的服务器来进行","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"node","attrs":{}}],"attrs":{}},{"type":"text","text":"安装。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"二、使用方法","attrs":{}}]},{"type":"numberedlist","attrs":{"start":1,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"使用阿里定制的 ","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":" 命令行工具代替默认的 ","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm","attrs":{}}],"attrs":{}},{"type":"text","text":",输入下面代码进行安装:","attrs":{}}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"c"},"content":[{"type":"text","text":"npm install -g cnpm --registry=https://registry.npm.taobao.org\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":2,"normalizeStart":2},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"检测","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"版本,如果安装成功可以看到","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"的基本信息。","attrs":{}}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"c"},"content":[{"type":"text","text":"cnpm -v\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":3,"normalizeStart":3},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","text":"以后安装插件只需要使用","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm intall","attrs":{}}],"attrs":{}},{"type":"text","text":"即可。","attrs":{}}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"假如已经习惯了","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm install","attrs":{}}],"attrs":{}},{"type":"text","text":"的安装方式,不想去下载阿里的","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"命令工具的话,将命令变成","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"怎么办?很容易我们想到,直接将","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"node","attrs":{}}],"attrs":{}},{"type":"text","text":"仓库地址改成淘宝镜像的仓库地址不就好了吗?","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"单次生效","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"c"},"content":[{"type":"text","text":"npm install --registry=https://registry.npm.taobao.org\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"永久生效","attrs":{}},{"type":"text","text":"设置成全局的下载镜像站点,这样每次","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"install","attrs":{}}],"attrs":{}},{"type":"text","text":"的时候就不用加","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"--registry","attrs":{}}],"attrs":{}},{"type":"text","text":",默认会从淘宝镜像下载,设置方法如下:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":1,"normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"打开","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":".npmrc","attrs":{}}],"attrs":{}},{"type":"text","text":"文件(","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"nodejs\\node_modules\\npm\\npmrc","attrs":{}}],"attrs":{}},{"type":"text","text":",没有的话可以使用","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"git","attrs":{}}],"attrs":{}},{"type":"text","text":"命令行建一个( ","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"touch .npmrc","attrs":{}}],"attrs":{}},{"type":"text","text":"),用","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cmd","attrs":{}}],"attrs":{}},{"type":"text","text":"命令创建会报错);","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"增加 ","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"registry =https://registry.npm.taobao.org","attrs":{}}],"attrs":{}},{"type":"text","text":" 即可。","attrs":{}}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"也可以按如下方式直接在命令行设置:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"c"},"content":[{"type":"text","text":"npm config set registry https://registry.npm.taobao.org\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"检测是否成功","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"c"},"content":[{"type":"text","text":"// 配置后可通过下面方式来验证是否成功\nnpm config get registry\n// 或\nnpm info express\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"这样,就可以使用淘宝镜像还不用更换成","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":",虽然实际都是使用的是淘宝镜像。最后附上淘宝镜像官网地址:","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"http://npm.taobao.org/","attrs":{}}],"attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"注:如果想还原","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm","attrs":{}}],"attrs":{}},{"type":"text","text":"仓库地址,只需再把地址配置成","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm","attrs":{}}],"attrs":{}},{"type":"text","text":"镜像就可以了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"c"},"content":[{"type":"text","text":" npm config set registry https://registry.npmjs.org/\n","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"三、npm淘宝镜像与cnpm区别","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"之前一直以为","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm","attrs":{}}],"attrs":{}},{"type":"text","text":"改成淘宝镜像后和","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"本质是一样的,今天在研究","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"package-lock.json","attrs":{}}],"attrs":{}},{"type":"text","text":"时候发现,这两者还是有很大区别。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"先贴下截图对比:1.使用","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"安装","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"lodash","attrs":{}}],"attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/66/6691f698b04dc009daec68ec58afa460.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2.使用改成淘宝仓库的","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm","attrs":{}}],"attrs":{}},{"type":"text","text":"安装","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"lodash","attrs":{}}],"attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/0a/0aede7dc2a35941073e6fcc6f64cbc05.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通过截图会发现:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"安装模块的时候会在","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"node_modules","attrs":{}}],"attrs":{}},{"type":"text","text":"文件夹生成二个文件夹,一个以下划线 _开头以及版本号组成的名字,一个正常名字的模块,文件夹名字虽然不一样,但里面文件是一样的。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"比如执行","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm install lodash","attrs":{}}],"attrs":{}},{"type":"text","text":",会在","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"node_modules","attrs":{}}],"attrs":{}},{"type":"text","text":"文件夹下生成两个文件夹:","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"[email protected]@lodash","attrs":{}}],"attrs":{}},{"type":"text","text":"和","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"lodash","attrs":{}}],"attrs":{}},{"type":"text","text":",","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"先执行","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm install lodash","attrs":{}}],"attrs":{}},{"type":"text","text":",然后再执行","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm install lodash","attrs":{}}],"attrs":{}},{"type":"text","text":",","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm","attrs":{}}],"attrs":{}},{"type":"text","text":"安装的","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"lodash","attrs":{}}],"attrs":{}},{"type":"text","text":"会替换掉","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"安装的","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"lodash","attrs":{}}],"attrs":{}},{"type":"text","text":"包(包括以下划线开头那个包),文件夹会只剩一个","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm","attrs":{}}],"attrs":{}},{"type":"text","text":"先安装的","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"lodash","attrs":{}}],"attrs":{}},{"type":"text","text":"包。再次","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm uninstall lodash","attrs":{}}],"attrs":{}},{"type":"text","text":"或者","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm uninstall lodash","attrs":{}}],"attrs":{}},{"type":"text","text":",都会删除","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"lodash","attrs":{}}],"attrs":{}},{"type":"text","text":"包,此时插件包就变成空文件夹了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"先执行","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm install lodash","attrs":{}}],"attrs":{}},{"type":"text","text":",然后再执行","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm uninstall lodash","attrs":{}}],"attrs":{}},{"type":"text","text":"后,此时会报错","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"c"},"content":[{"type":"text","text":" npm ERR! code EINVALIDPACKAGENAME\n npm ERR! Invalid package name \"[email protected]@lodash\": name cannot start with an underscore; \n name can only contain URL-friendly characters\n","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但是使用","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm uninstall lodash","attrs":{}}],"attrs":{}},{"type":"text","text":"后,不会报错,此时会删掉","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"安装的两个包中其中一个即非下划线(正常名字)的包。剩余的那个包是可以正常通过鼠标点击打开的。然后在文件中","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"require","attrs":{}}],"attrs":{}},{"type":"text","text":"会报错,提示没有这个包。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"先执行","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm install lodash","attrs":{}}],"attrs":{}},{"type":"text","text":",然后手动删除","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"安装的两个包中其中一个即下划线(非正常名字)的包,剩余的那个包,发现无法通过鼠标点击打开了。然后在文件中","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"require","attrs":{}}],"attrs":{}},{"type":"text","text":"会报错,提示没有这个包。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/3a/3acbf308e1920dd32cbfd61de3cba761.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所以,","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"安装的2个模块,两者存在引用关系,正常名字模块是非正常名字模块的索引,两者都必须存在才可以使用。但是","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm","attrs":{}}],"attrs":{}},{"type":"text","text":"安装下来就不存在这种情况了,因为只有一个正常名字模块。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"实测发现,尽管使用","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"npm","attrs":{}}],"attrs":{}},{"type":"text","text":"改成淘宝仓库,发现安装速度还是远远比","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"慢(当模块比较多的时候)。应该和","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"cnpm","attrs":{}}],"attrs":{}},{"type":"text","text":"安装的文件结构有关系。","attrs":{}}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章