NPM的全称是NodeJs Package Manager(Nodejs包管理器),从名字上可以看出他是Node.js的一个包管理工具,它是随Node一起安装的。
能做什么?- 从NPM服务器下载别人写好的包或命令行程序到本地直接使用。
- 将自己写好的包或命令行程序上传到NPM服务器供别人使用。
npm不需要特意安装,在安装Node的时候,会连带一起安装,但是有可能安装的时候npm不是最新版本,我们需要升级一下。
升级到最新版本
sudo npm install npm@latest -g
Windows下升级版本:
npm install npm -g
查看当前版本:
npm -v
2、使用npm命令安装依赖模块
npm install
安装好后,功能模块就放在node_modules目录中,因此在代码中只需要通过require(‘Module Name’)的方式就可以引用。
var mModule = require('Module Name');
3、全局安装与本地安装
npm 的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已(g代表global)
本地安装- 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
- 可以通过 require() 来引入本地安装的包。
- 将安装包放到电脑上,一般会放到 /usr/local 下或者你 node 的安装目录。
- 可以直接在命令行使用。
卸载express功能模块包
npm uninstall express
查看是否还存于与node_modules目录下
npm ls
5、更新模块
npm update express
6、搜索模块
npm search express
7、创建模块
创建模块
npm init
注册用户:
npm adduser
输入用户名
输入密码
输入邮箱
发布模块:
npm publish
8、查看帮助信息
所有命令
npm help
命令简单用法
npm -l
查看配置
npm config list -l
9、package.json
package.json 位于模块的目录下,用于定义包的属性。
属性说明:
- name - 包名。
- version - 包的版本号。
- description - 包的描述。
- homepage - 包的官网 url 。
- author - 包的作者姓名。
- contributors - 包的其他贡献者姓名。
- dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
- repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
- main - main 字段指定了程序的主入口文件,require(‘moduleName’) 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js
- keywords - 关键字
现在国内的情况,直接使用官方的镜像是非常慢的,用淘宝的镜像会快很多。
配置淘宝镜像命令:
npm install -g cnpm --registry=https://registry.npm.taobao.org
用淘宝镜像安装模块:
cnpm install
npm install 命令
最近在写Node程序的时候,突然对 npm install 的-save和-save-dev 这两个参数的使用比较混乱。其实博主在这之前对这两个参数的理解也是模糊的,各种查资料和实践后对它们之间的异同点略有理解。遂写下这篇文章避免自己忘记,同时也给node猿友一点指引。
我们在使用 npm install 安装模块的模块的时候 ,一般会使用下面这几种命令形式:
npm
install
moduleName
# 安装模块到项目目录下
npm
install
-g moduleName
# -g的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置。
npm
install
-save moduleName
# -save的意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。
npm
install
-save-dev moduleName
# -save-dev的意思是将模块安装到项目目录下,并在package文件的devDependencies节点写入依赖。
那么问题来了,在项目中我们应该使用四个命令中的哪个呢?这个就要视情况而定了。下面对这四个命令进行对比,看完后你就不再这么问了。
npm install moduleName 命令1. 安装模块到项目node_modules目录下。 2. 不会将模块依赖写入devDependencies或dependencies 节点。 3. 运行 npm install 初始化项目时不会下载模块。
npm install -g moduleName 命令1. 安装模块到全局,不会在项目node_modules目录中保存模块包。 2. 不会将模块依赖写入devDependencies或dependencies 节点。 3. 运行 npm install 初始化项目时不会下载模块。
npm install -save moduleName 命令1. 安装模块到项目node_modules目录下。 2. 会将模块依赖写入dependencies 节点。 3. 运行 npm install 初始化项目时,会将模块下载到项目目录下。 4. 运行npm install --production或者注明NODE_ENV变量值为production时,会自动下载模块到node_modules目录中。
npm install -save-dev moduleName 命令1. 安装模块到项目node_modules目录下。 2. 会将模块依赖写入devDependencies 节点。 3. 运行 npm install 初始化项目时,会将模块下载到项目目录下。 4. 运行npm install --production或者注明NODE_ENV变量值为production时,不会自动下载模块到node_modules目录中。
总结devDependencies 节点下的模块是我们在开发时需要用的,比如项目中使用的 gulp ,压缩css、js的模块。这些模块在我们的项目部署后是不需要的,所以我们可以使用 -save-dev 的形式安装。像 express 这些模块是项目运行必备的,应该安装在 dependencies 节点下,所以我们应该使用 -save 的形式安装。