NPM
NPM 是 Node 的模块管理和发布工具,类似于 Python 的 setuptools,一些常见的工具,例如 grunt、bower 等工具都是通过 NPM 发布的,NPM 默认包含在 NodeJS 的安装包中,其中 npx 是 npm v5.2.0 引入的命令,所以这里直接安装 NodeJS 包。
详细可以查看官网 www.npmjs.com,也可以从 npm.taobao.org 上下载最新安装包,直接下载二进制安装包解压即可。
安装配置
使用默认的镜像源时,可能会导致不稳定,可以通过如下两种方式指定源,如下是淘宝的。
----- 1. 临时指定镜像源
$ npm install --registry http://registry.npm.taobao.org express
----- 2. 永久设置,并查看是否已经修改
$ npm config set registry http://registry.npm.taobao.org
$ npm config get registry
NPM 安装分为本地安装和全局安装两种,区别在于是否使用 -g
参数。
$ npm info grunt-cli ← 查看版本、依赖等信息
# npm install -g grunt-cli ← 全局安装客户端
$ npm install grunt ← 安装本项目的目录下
$ npm install grunt@1.2.3 ← 安装指定版本
$ npm install grunt --save ← 安装本项目的目录下,同时保存在package文件中
$ npm install grunt --save-dev ← 安装本项目的目录下,同时保存在package文件中
# npm uninstall -g <package> ← 删除全局包
$ npm list grunt ← 查看grunt版本信息,也可以使用 ls
$ npm list --depth=0 ← 仅查看本地直接安装包
$ npm list --depth=0 -global ← 仅查看全局直接依赖
$ npm config set prefix "PATH" ← 设置全局路径
$ npm config get prefix ← 获取当前设置的目录,也就是包的安装路径
全局会安装到 /usr/lib/node_modules
目录下,本地则会安装到 node_modules
目录下,而一些二进制文件,例如 lite-server
包,通常同时会在 /usr/bin
目录下安装一个二进制文件。
不同 OS 发行版本的全局安装路径会有所区别,可以通过 npm config ls
或者 npm config get prefix
命令查看,有些包 (例如 typescript
) 会包含可执行文件,就需要在 PATH
环境变量中添加对应 bin
路径。
package.json
包的定义和 NPM 都围绕着 package.json
文件做文章,用于存放模块的名称、版本、作者、模块入口、依赖项等信息,可以通过 npm help json
查看帮助文档,详细可查看 docs.npmjs.com 。
可以通过 npm init
交互式初始化项目,会生成一个 package.json
文件,一个 node package 有两种依赖,分别是:A) dependencies,是正常运行该包时所需要的依赖项;B) devDependencies,开发的时候需要的依赖项,像一些进行单元测试之类的包。
{
"name": "foobar-demo", # 模块名称
"version": "1.0.0", # 版本号,通常是Major.Minor.Patch
"description": "Hello World",
"scripts": {
"product": "webpack",
"dev": "webpack"
"start": "exec-bin ls /" # 执行命令
},
"dependencies": {
"jquery": "^3.1.0"
},
"devDependencies": {
"clean-webpack-plugin": "^0.1.10",
"copy-webpack-plugin": "^3.0.1",
"css-loader": "^0.23.1",
"extract-text-webpack-plugin": "^1.0.1",
"less": "^2.7.1",
"less-loader": "^2.2.3",
"style-loader": "^0.13.1",
"webpack": "^1.13.1",
"webpack-merge": "^0.14.1"
}
}
在定义版本号的时候,有如下的匹配方式:
1.1.1 精确下载安装1.1.1版本的包
>,=1.1.1 大于、小于等于、大于等于1.1.1版本的包
1.0.1-1.1.1 版本范围是包含1.0.1到1.1.1版本的包
~1.1.1 尽量采用靠近1.1.1版本的包,可用版本1.1.1-0到1.1.x-x
~1.1 下载安装1.1.x-x版本的包
~1 下载安装1.x.x-x版本的包
其它
$ npm ls --depth 0 当前项目的依赖模块
$ npm ls -g --depth 0 全局模块
----- 可以通过如下方式分别安装。
$ npm install --production
$ npm install --dev