NPM常用命令

357 阅读4分钟

WHAT 

NPM的全称是Node Package Manager,npmNode 官方提供的包管理工具,他已经成了 Node 包的标准发布平台,用于 Node 包的发布、传播、依赖控制。

npm 提供了命令行工具,使你可以方便地下载、安装、升级、删除包,也可以让你作为开发者发布并维护包。

WHY 

NPM是随同 Node 一起安装的包管理工具,能解决 Node 代码部署上的很多问题,常见的场景有以下几种:

  • 允许用户从 npm 服务器下载别人编写的第三方包到本地使用。
  • 允许用户从 npm 服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到 npm 服务器供别人使用。

 NPM的背后,是基于 CouchDB 的一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。

HOW

安装

NPM不需要单独安装。在安装 Node 的时候,会连带一起安装 npm 。但是,Node 附带的 npm 可能不是最新版本,更新到最新版本。

 npm install npm -g

npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。

npm install -g cnpm --registry=https://registry.npm.taobao.org

使用

会在当前目录初始化一个package.json文件,这个文件中会记录一些关于项目的信息,比如:项目的作者,git地址,入口文件、命令设置、项目名称和版本号等等,一般情况下这个文件是必须要有的,方便后续的项目添加和其他开发人员的使用。如果使用了 -f(代表force)、-y(代表yes),则跳过提问阶段,直接生成一个新的 package.json 文件。

npm init[-f|--force|-y|--yes]

 查看 npm 命令列表

npm help

 查看各个命令的简单用法

npm -l

查看 npm 的版本

npm -v

搜索模块

npm search [package_name]

查看npm的配置

npm config list -l

等于为 npm init 设置了默认值,以后执行 npm init 的时候,package.json的作者姓名、邮件、主页、许可证字段就会自动写入预设的值。这些信息会存放在用户主目录的 ~/.npmrc文件,使得用户不用每个项目都输入。如果某个项目有不同的设置,可以针对该项目运行 npm config

npm set init-author-name 'Your name'
npm set init-author-email 'Your email'
npm set init-author-url 'http://yourdomain.com'
npm set init-license 'MIT'

npm 在默认情况下会从 NPM 搜索或下载包,将包安装到当前目录的 node_modules 子目录下。

npm [install/i] [package_name]

一般来说,全局安装只适用于工具模块,比如 eslintgulp 。关于使用全局模式,多数时候并不是因为许多程序都有可能用到了它,为了减少多重副本而使用全局模式,而是因为 本地模式不会注册 PATH 环境变量
“本地安装”指的是将一个模块下载到当前项目的 node_modules 子目录,然后只有在项目目录之中,才能调用这个模块。

本地安装依赖包

npm [install/i] [package_name]

全局安装依赖包

npm [install/i] [-global/-g] [package_name]

从Github代码块地址下载安装

npm install git://github.com/package/path.git
npm install git://github.com/package/path.git#0.1.0

强制重新安装依赖包

npm install <packageName> --force

安装之前,npm install 会先检查,node_modules 目录之中是否已经存在指定模块。如果存在,就不再重新安装了,即使远程仓库已经有了一个新版本,也是如此。

install 命令总是安装模块的最新版本,如果要安装模块的特定版本,可以在模块名后面加上 @ 和版本号。

npm install <packageName>@latest

模块名将被添加到 dependencies

npm install <packageName> --save/-S

模块名将被添加到 devDependencies

npm install <packageName> --save-dev/-D

通过 npm install 就可以很方便的下载一个完整的 package.json文件这个模块所需要的包。

npm install 默认会安装 dependencies 字段和 devDependencies 字段中的所有模块,如果使用 --production 参数,可以只安装 dependencies 字段的模块。

package.json 文件中 scripts 字段,可以用于指定脚本命令,供 npm 直接调用。

npm install --production

 "scripts":{
   "dev": "cross-env BABEL_ENV=development webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", 
   "build:prod": "cross-env NODE_ENV=production env_config=prod node build/build.js",
   "build:sit": "cross-env NODE_ENV=production env_config=sit node build/build.js", 
   "start": "npm run dev",
   "build": "node build/build.js", 
   "build:report": "npm_config_report=true npm run build",
   "lint": "eslint --ext .js,.vue src",
   "test": "npm run lint",    "clean": "rm -rf dist",
   "precommit": "lint-staged", 
   "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml" 
 }

npm run dev
npm run start
npm run test
...

将依赖包升级到最新版本

npm update <package>

把全局安装的依赖包更新至最新版

npm update <package> -g

清空NPM本地缓存

npm cache clear

卸载模块

npm uninstall <package>

这里推荐使用安装nrm插件对源进行管理

管理npm源

// 安装
npm i -g nrm

// 查看源, *开头的就是当前所处的源
nrm ls

// 添加源
nrm add XXX

// 切换源,淘宝源
nrm use taobao 

// 删除源
nrm del XXX