WHAT
NPM
的全称是Node Package Manager,npm
是 Node
官方提供的包管理工具,他已经成了 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]
一般来说,全局安装只适用于工具模块,比如 eslint
和 gulp
。关于使用全局模式,多数时候并不是因为许多程序都有可能用到了它,为了减少多重副本而使用全局模式,而是因为 本地模式不会注册 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