npm 、cnpm常用命令及.npmrc配置文件详解
1、npm 和 cnpm的作用
NPM(Node Package Manager,节点包管理器)是NodeJS的包管理器,用于节点插件的管理(包括安装,卸载和管理依赖等)。NPM是随同NodeJS一起安装的包管理工具,所以我们需要安装NodeJS。
NPM的常见使用场景
1.允许用户从NPM服务器上下载别人编写的第三方包到本地使用。
2.允许用户从NPM服务器上下载并安装别人编写的命令行程序到本地使用。
3.允许用户将自己编写的包或命令行程序上传到NPM服务器上供别人使用。
使用npm安装插件:npm install <name> [-g] [--save-dev]
使用npm卸载插件:npm uninstall <name> [ -g ] [ --save-dev ]
使用npm更新插件:npm update <name> [ -g ] [ --save-dev ]
注意、其中<name>:插件名称,也叫模块名称。
Install可简写为i。
-g:有它为全局(global)安装,无则为非全局安装,
--save:将保存至package.json(package.json是NodeJS项目配置文件)。
-dev;:保存至的package.json的devDependencies节点,不指定-dev将保存至依赖节点。
关于npm的本地安装和全局安装
本地安装
如果你自己的模块依赖于某个包,并通过 Node.js 的 require 加载,那么你应该选择本地安装。是指你在该(项目)目录下使用或者通过命令行进入到该(项目)目录下,使用 了npm install xxx的方法。像jQuery这种的前端框架,就采用本地安装,将他安装到使用它的项目目录中,这样后期提交代码和移植时,也能让前端jQuery等框架只出现再该项目中。命令行可能就要麻烦点切换到该路径下才能使用。
全局安装
如果你想将包作为一个命令行工具,应该选择全局安装,使用了-g或--global参数:npm install xxx -g或者npm install xxx --global,这种安装方式后可以让你在任何目录下使用这个包。像cnpm、打包工具之类的软件类产品,就采用全局安装,这样就可以在本地任何时候使用这个工具或者软件(就像配置了环境变量一样,可以在任何位置调用该软件的命令行执行命令)。
本地安装,在哪个文件夹下运行npm,npm就在当前目录创建一个文件夹node_modules,
全局安装模块将被下载安装到“全局目录(全局安装目录)”中。
全局安装目录的查看:
npm config get prefix
全局安装目录的修改(一般不要修改):
npm config set prefix "D:\nodejs",这样再全局安装时,会自动找这个文件夹使用。
npm查看全局安装过的包(package)
怎么查看自己全局安装过的包,用命令:
npm list -g --depth 0
-g:全局的安装包
list:已安装的node包
–depth 0:深度0
【npm 中文文档
https://www.npmjs.cn】
为什么要用CNPM
NMP安装插件是从NPM官网下载对应的插件包,该网站的服务器在国外,经常会出现下载缓慢或出现异常,这时便需要找到另外的方法提供稳定的下载,这个方法就是CNPM。阿里巴巴的淘宝团队把NMP官网的插件都同步到了在中国的服务器,提供给我们从这个服务器上稳定下载资源。
CNMP同样是NMP的一个插件,要安装的话需要在cmd命令行控制台执行以下命令:
npm install cnpm -g --registry=https://registry.npm.taobao.org
安装完成后可以使用cnpm -v命令查看版本号,要使用cnmp命令的话最好在安装后重新打开cmd命令行控制台。
cnpm的用法和npm的用法一致,只是在执行命令的时候将npm改为cnpm。
关于淘宝 NPM 镜像可参见:
https://developer.aliyun.com/mirror/NPM?from=tnpm
2、修改Nodejs内置的npm默认配置路径
Nodejs 内置的npm默认会把模块安装在c盘的目录下:C:\Program Files\nodejs\node_modules
查看npm的当前配置
在cmd中输入 npm config ls
安装的模块(包)存放路径以及cache的路径的配置,这些路径默认是在 C 盘:
npm install安装的模块(包)可以通过下面的命令查看路径。
npm config get prefix
缓存目录,可以通过下面的命令,找到对应的位置
npm config get cache
这样会增加系统盘的负担,可以修改两个路径
首先在别的盘新建两个目录
E:\nodejs\node_modules
E:\nodejs\node_cache
然后在cmd中依次执行:
npm config set prefix"E:\nodejs\node_modules"
npm config set cache"E:\nodejs\node_cache"
或者,直接修改.npmrc配置文件
在cmd中使用npm config edit命令,打开.npmrc配置文件(参见后面的3),
在其中找到
prefix=
cache=
这两处,修改成:
prefix= E:\nodejs\node_modules
cache= E:\nodejs\node_cache
修改环境变量
由于node全局模块大多数都是可以通过命令行访问的,所以还要把“E:\nodejs\ node_modules”加入到系统PATH中,方便直接使用命令行运行。
3、想知道.npmrc文件的位置,可以通过下面的命令查看
npm config ls -l
显示结果的“userconfig =”右侧,就是.npmrc文件的位置
查看.npmrc配置文件的命令:npm config edit
4、使用npm init初始化项目
为什么要使用npm init初始化项目
在node开发中使用npm init会生成一个pakeage.json文件,这个文件主要是用来记录这个项目的详细信息的,它会将我们在项目开发中所要用到的包,以及项目的详细信息等记录在这个项目中。方便在以后的版本迭代和项目移植的时候会更加的方便。使用npm init初始化项目还有一个好处就是在进行项目传递的时候不需要将项目依赖包一起发送给对方,对方在接受到你的项目之后再执行npm install就可以将项目依赖全部下载到项目里。
在cmd窗口执行的,我们可以windows+r键来打开窗口,然后输入cmd执行。在cmd窗口中用cd命令进入自己项目所在的目录。
【若想新建一个空的文件夹,可以使用mkdir命令】
调用 npm init 来初始化 package.json,它是 NodeJS 约定的用来存放项目的信息和配置等信息的文件。
进入到项目所在的目录之后,就可以直接执行npm init
执行了npm init之后,会让我们填写一些配置信息
【或者执行npm init -y
其中y 代表yes ,省去了默认选项点击。】
说明:
package name: 你的项目名字叫啥
version: 版本号
description: 对项目的描述
entry point: 项目的入口文件(一般你要用那个js文件作为node服务,就填写那个文件)
test command: 项目启动的时候要用什么命令来执行脚本文件(默认为node app.js)
git repository: 如果你要将项目上传到git中的话,那么就需要填写git的仓库地址(这里就不写地址了)
keywirds: 项目关键字(可以不输入)
author: 作者的名字(也就是你叫啥名字)
license: 发行项目需要的证书(可以先不管)
如果我们在进行package.json文件配置的时候写错了东西,或者后期要添加什么内容的话,我们是可以直接在项目的根目录中找到package.json打开(可用“记事本”打开)然后进行编辑修改。
如果我们在进行package.json文件配置的时候写错了东西,或者后期要添加什么内容的话,我们是可以直接在项目的根目录中打开然后进行修改,我在配置文件中增加了一个运行项目的命令
//package.json
{
"name": "xajd",
"version": "1.0.0",
"description": "我的第一个node项目",
"main": "app.js",
"dependencies": {
"koa": "^2.0.0",
"koa-router": "^7.4.0",
"mysql": "^2.17.1"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node app.js" //加入“入口文件”,执行npm start会执行app.js
},
"author": "wudi",
"license": "ISC"
}
我在入口文件中写入了这一行代码
//app.js
console.log(`我 已 经成 功
运 行 了 `)
接下来我们启动项目
npm start
执行情况如下:
【或,输入 node tapp.js 也可以:
】
5、查看安装过的模块和包的安装位置及版本信息
查看安装过的模块和包的安装位置
npm ls 名字 -g
其中-g查看全局的模块和包信息,去掉查看本地的
例、查看mysql模块和包,留意-g使用与否的差别
npm ls mysql -g
npm ls mysql
查看本地下载的包版本信息
npm ls 名字 -g
其中-g查看全局的模块和包信息,去掉查看本地的
查看下载的 mysql 包版本信息:
【查看npm服务器上包所有的版本信息
npm view 名字 versions|version
versions|version两者选一,versions 查看npm服务器上包所有的版本信息;version查看npm服务器上最新包的版本信息;
如npm view mysql versions】
附
一篇好相关资料:利用npm安装/删除/发布/更新/撤销发布包