查看源: npm config get registry或npm config list
修改源: npm config set registry=https://registry.npm.taobao.org
查看全局安装路径: npm config get prefix
修改全局安装路径: npm config set prefix G:/node_modules_global
初始化目录: npm init
全局安装(如gulp): npm install -g gulp
全局包卸载(如gulp): npm uninstall -g gulp
项目本地安装(如gulp): npm install gulp --save-dev
项目本地卸载(如gulp): npm uninstall gulp --save-dev
查看全局安装包: npm ls --global (会查看到安装包所包含的所有依赖文件)
查看全局安装包: npm ls --global -depth (只查看顶级安装包)
查看本地安装包: npm ls
查看本地安装包: npm ls
===============================================================================================
安装项目
npm安装制定分支
git://github.com/<user>/<project>.git#<branch>
差异
一个node package有两种依赖,一种是dependencies一种是devDependencies,
其中前者依赖的项该是正常运行该包时所需要的依赖项,而后者则是开发的时候需要的依赖项,像一些进行单元测试之类的包。
如果你将包下载下来在包的根目录里运行
npm install
默认会安装两种依赖,如果你只是单纯的使用这个包而不需要进行一些改动测试之类的,可以使用
npm install --production
只安装dependencies而不安装devDependencies。
如果你是通过以下命令进行安装
npm install packagename
那么只会安装dependencies,如果想要安装devDependencies,需要输入
npm install packagename --dev
缓存
npm install或npm update命令,从 registry 下载压缩包之后,都存放在本地的缓存目录。
查看cahce
$ npm config get cache
浏览这个目录
$ npm cache ls
清空它的命令
$ npm cache clean
===============================================================================================
Node的安装过程
发出npm install命令
npm 向 registry 查询模块压缩包的网址
下载压缩包,存放在~/.npm目录
解压压缩包到当前项目的node_modules目录
问题
运行npm install的时候,只会检查node_modules目录,而不会检查~/.npm目录。也就是说,如果一个模块在~/.npm下有压缩包,
但是没有安装在node_modules目录中,npm 依然会从远程仓库下载一次新的压缩包。
--cache-min参数
解决这些问题,npm 提供了一个--cache-min参数,用于从缓存目录安装模块
--cache-min参数指定一个时间(单位为分钟),只有超过这个时间的模块,才会从 registry 下载。
$ npm install --cache-min 9999999 <package-name>
另一种写法
$ npm install --cache-min Infinity <package-name>
===============================================================================================
npm 发布自己插件
设置npm源为npm官网的 npm set registry=http://registry.npmjs.org
npm init
{
"name": "npm", //项目或者插件的名字
"version": "1.0.0", //版本号,每次发布新版本的时候需要手动更新版本号
"description": "",
"main": "index.js", //入口文件,加载这个插件时读的文件
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"author": "", //作者,这个名字可以是你注册npm账号的名字
"license": "ISC"
}
npm whoami
最后执行发布插件的命令
npm adduser //如果没有账号,用此命令注册
npm login //如果有账号,用此命令登陆
npm publish 发布npm包
使用npm unpublish <package>@<version>可以撤销发布自己发布过的某个版本代码。
==============================================================================================
npm包的定义
npm社区版本号规则采用的是semver(语义化版本),主要规则版本格式:主版本号.次版本号.修订号,版本号递增规则如下:
主版本号:当你做了不兼容的 API 修改,
次版本号:当你做了向下兼容的功能性新增,
修订号:当你做了向下兼容的问题修正。
这里 npm 实际安装的模块是根据依赖的表示来决定的:
"bluebird": "~3.1.1" 表示会安装最新的补丁版本。比如:安装 3.1.2、3.1.3 等,
但是不会安装 3.2.0 这种小版本或者4.0.0 这种大版本(就算这些版本是最新的)。这种表示法是比较保险的,因为补丁版本只是 bug 修复,不会新增功能。
"request-promise": "^1.0.2" 表示会安装最新的补丁版本或者小版本。比如:安装 1.1.0、1.1.1 等小版本,或者 1.0.3、1.0.4 等补丁版本,
但是不会安装 2.0.0 这种大版本。而且,总是安装版本号最大的(也就是优先安装小版本)。这种表示法通常是保险的,小版本会增加向后兼容的功能。
"lodash": "*" 表示安装最新的版本(不管这个版本是大版本、小版本、还是补丁版本)。这种表示法非常危险,如果有大版本,直接就安装了大版本,
而大版本通常是不会向后兼容的,可能导致项目功能运行异常。
升级补丁版本号:npm version patch
升级小版本号: npm version minor
升级大版本号: npm version major
latest:安装最新版本==============================
=====================================================================
pkg 包名称
version 版本号
latest 当前版本
other 自定义模块
查看 npm view <pkg> 和npm info <pkg>一样
查看版本信息 npm view <pkg> version
查看tag信息 npm info <pkg> dist-tags (json)和npm dist-tag ls<pkg>一样
添加tag,已有version npm dist-tag add <pkg>@<version> <tag>
添加tag,新version npm publish -tag=<name>
删除tag npm dist-tag rm <pkg> <tag>
查看tag npm dist-tag ls<pkg>
安装指定一版本的包 npm install <pkg>[@tag]
pkg版本稳定将那么版本升级为lastst版本
npm dist-tag add <pkg>@<version> latest
更新npm版本
npm update <pkg>
npm update [-g] [<pkg>...]用来更新包,需要注意的是包更新依然需要符合package.json中的版本号范围,
只会在版本号范围内更新最新版本的包。有-g,--dev,--save参数,没有加具体包名时默认更新所有的包。
我们安装模块时,可以执行 npm install name --save(生产阶段的依赖)
或是 npm install name --save-dev(开发阶段的依赖),来将模块信息保存到项目的 package.json 文件中。