npm是什么
资源包的管理器,安装NodeJS时会直接安装NPM
常用命令
$ 下载并安装node.js也就将npm直接安装
$ npm install npm@latest -g // 更新npm
$ npm i [package_name] // 安装包,将在当前目录创建一个node_modules目录,将下载的包保存到这个目录
$ npm update // 获取最新的包并更新
$ npm uninstall [package_name] // 卸载包,命令是将node_modules目录将包的文件删除
$ npm uninstall --save [package_name] // 卸载包,将从package.json文件中删除依赖, 如果--save-dev安装就需要换成--save-dev
# npm i -g [package_name] // 全局安装包,两种安装本地和全局安装,如果遇到acces错误权限问题,需要在前面加sudo,安装在/usr/local/lib/node_modules/中
$ npm update -g [package_name] // 更新全局包
$ npm uninstall -g [package_name] // 卸载全局包
$ npm init -y 快速创建package.json包
package.json参数介绍
name - 包名
version - 包的版本号
description - 包的描述
homepage - 包的官网 url
author - 包的作者姓名
contributors - 包的其他贡献者姓名
dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下
repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上
main - main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 express,然后用户安装它,然后require("express")
keywords - 关键字
npm install 安装模块
npm i [package_name] --save-dev
1、-S, --save 安装包添加到dependencies(项目依赖)中
npm i 包名 --save
当发布时可以不会将node_module目录发布出去,可以将package.json发布出去,其它项目的人,可以通过npm install 下载dependenciess中的所有包内容.
例:
npm install gulp --save 或 npm install gulp -S
"dependencies": {
"gulp": "^1.0.0"
}
2、-D, --save-dev 安装包信息将加入到devDependencies(开发阶段的依赖),所以开发阶段一般使用它
npm install gulp --save-dev 或 npm install gulp -D
"devDependencies": {
"gulp": "^1.0.0"
}
3、-O, --save-optional 安装包信息将加入到optionalDependencies(可选阶段的依赖)
npm install gulp --save-optional 或 npm install gulp -O
"optionalDependencies": {
"gulp": "^1.0.0"
}
4、-E, --save-exact 精确安装指定模块版本
npm install gulp --save-exact 或 npm install gulp -E
输入命令npm install gulp -ES,留意package.json 文件的 dependencies 字段,以看出版本号中的^消失了
"dependencies": {
"gulp": "3.9.1"
}
npm i 选项–global,–save,–save-dev
-global: 简写 -g
npm i express -g 为全局安装,这种就可以直接使用express命令, 否则会提示express不是内部或外部命令
-save: 简写 -S, 作用是在package.json的dependencies字段增加或修改安装包和版本号
-save-dev: 简写 -D, 是修改devDependencies, 这样就不用安装了某个包之后手动修改package.json
~ 与 ^ 版本
版本分为: 主版本号、次版本号、补丁版本号
"devDependencies": {
"vue": "~2.2.2", // 匹配最近小版本,如,会匹配所有的2.2.x版本,但最高不会匹配2.3.0
"vue-router": "^2.2.0" // 最近的一个大版本,所有 2.x.x但不不包括3.0.0,相当于 2.0.0 <= version < 3.0.0
}
npm ls 查看安装的模块
查看安装模块及依赖:npm ls -g
发布模块
使用以下命令在 npm 资源库中注册用户(使用邮箱注册):
$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) xxxxxx@qq.com
来发布模块命令: $ npm publish
script属性
script属性定义的对应了一段shell脚本
1、npm start 启动模块
该命令写在package.json文件scripts的start字段中,可以自定义命令来配置一个服务器环境和安装一系列的必要程序
"scripts": {
"start": "gulp -ws"
}
2、npm stop 停止模块
3、npm restart 重新启动模块
常见错误
一、npm使用过程中遇到的 Cannot find module 'internal/fs',错误场景 gulp中执行任务报错,的确amd-optimize插件中的graceful-fs与gulp中graceful-fs的版本问题,
解决:
删除插件 npm uninstall graceful-fs
安装 npm i graceful-fs --save
二、$ npm view react versions 查看包在npm所有版本
三、$ npm i vue@2.0.0 --save 安装指定版本
| 参考资料
| https://www.npmjs.com.cn/
| https://www.cnblogs.com/blackgan/p/7828047.html 常用命令
| http://www.alloyteam.com/2016/03/master-npm/
| https://github.com/ericdum/mujiang.info/issues/6/
| http://www.luckyonecn.com/blog/difference_between_dependencies_and_devdependencies_in_npm/