平时开发中npm作为包管理器来说相对来说比较好用,但是由于服务器不在国内所以有的时候速度会慢一点,也可能经常会出现不稳定的情况,所以需要使用淘宝的cnpm代替npm,因为它的服务器在国内,所以使用可以提高我们的下载速度和稳定性。
但在安装使用时,会发现报 cnpm不是内部或外部命令
的问题,在网上看到也有好多 ‘解决’ 的办法,最多的是修改系统的环境变量,然而在我这并没有什么卵用,所以在此记录下自己摸索解决的过程。
首先,安装 cnpm
完成后,此时执行 cnpm -v
是会提示命令未找到:
接下来的关键,是注意上图中红框部分,因为安装完后会返回执行 cnpm
命令的脚本文件路径 和 cnpm
的安装路径,而你安装 node
后为啥就可以直接使用 npm
命令来管理包呢?查看 npm
的安装路径,果然是与 cnpm
的安装路径不一致,如下:npm
: D:\Program Files\nodejs\node_modules\npmcnpm
: D:\Program Files\nodejs\node_global\node_modules\cnpm
返回到 node
的安装目录,我们可以看到 npm
命令执行的脚本文件:D:\Program Files\nodejs\npm:
却并未发现 cnpm
命令执行的脚本文件,这就是我们不能直接使用 cnpm
命令的原因。
解决问题
此时,我们就可以根据安装 cnpm
返回的路径来找到它的执行脚本路径,然后将其复制到与 npm
命令执行脚本文件同一个目录下,即 D:\Program Files\nodejs目录下:
接着还没完,此时你打开 cnpm
文件:
可以看到脚本执行到对应安装目录是指向不是它自己的安装目录,而是 D:\Program Files\nodejs\node_modules
,这里就好办了,你有 两种方法 去解决这个问题:
一是修改脚本文件,把上图红框部分路径修改成 cnpm
对应的安装目录,即 $basedir/node_modules/cnpm/bin/cnpm
改为 $basedir/node_global/node_modules/cnpm/bin/cnpm
。(经过测试,cnpm.cmd
文件不改没有影响,它是在window系统的cmd
命令窗口执行才会有影响,在这也一并改了过来。)
二是可以直接把 cnpm
的安装目录整个拷贝到 D:\Program Files\nodejs\node_modules
下,即与原来脚本文件中的路径一致。
以上两种方法都有一个共性,就是把 脚本执行目录 指向正确的 安装目录,这样执行脚本才能关联到对应的文件并执行命令,以上两者选择其一即可。