npm 常用命令

查看源:            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 文件中。

原文地址:https://www.cnblogs.com/webrqy/p/7009360.html