4.1 NPM介绍
NPM是Node.js的包管理工具,它的重要性就像gem之于Ruby一样。简单来说,Node.js与NPM的关系是密不可分的。
4.1.1 NPM常用命令
NPM默认与Node.js一起安装,可以在命令行中输入npm,验证NPM是否安装,如图4.1所示。
图4.1 NPM验证安装结果
1.npm –v、npm version
通过输入“npm -v”命令或者“npm –version”命令可以查看NPM的安装版本(v6.14.5),如图4.2所示。
图4.2 NPM查看版本结果
2.npm init
通过“npm init”命令可以生成一个package.json文件。这个文件是整个项目的描述文件。通过这个文件可以清楚地知道项目的包依赖关系、版本、作者等信息。每个NPM包都有自己的package.json文件,使用这个命令需要填写项目名、版本号、作者等信息,如图4.3所示。
图4.3 npm init生成package.json文件
填写完毕后,可以看到在使用命令的文件夹中多了一个package.json文件。当然,如果读者不想填写这些内容,也可以在这条命令后添加参数-y或者--yes,这样系统将会使用默认值生成package.json文件,例如:
npm init -y //or npm int --yes
3.npm install
通过“npm install”命令安装包,如安装underscore这个包(underscore是一个强大的JavaScript工具库,使用这个库可以大大提高开发效率),如图4.4所示。
图4.4 安装underscore结果
命令运行完毕后,可以发现在运行命令的文件夹中多了一个名为node-modules的文件夹(用来存放安装包的文件夹)。打开这个文件夹就可以找到名为underscore的文件夹(用来存放underscore包),如图4.5所示。
图4.5 underscore文件夹下的文件
在安装包的时候,同样可以在命令后添加--save或者-S参数,这样安装包的信息将会记录在package.json文件的dependencies字段中,如图4.6所示。这样可以很方便地管理包的依赖关系。
图4.6 使用--save参数安装
当然如果这个包只是开发阶段需要的,可以继续添加-dev参数。这样安装包的信息将会记录在package.json文件的devDependencies字段中,如图4.7所示。
图4.7 使用--ave-dev参数安装
提示
将所有项目安装的包都记录在package.json文件中。当我们的package.json文件中有了依赖包的记录时,只需要运行“npm install”命令,系统就会自动安装所有项目需要的依赖包。
当不需要使用某个包时,可以运行“npm uninstall”命令来卸载这个包。
4.1.2 package.json文件
上文提到package.json文件是提供包描述的文件。在Node.js中,一个包是一个文件夹,文件夹中的package.json文件以json格式存储该包的相关描述。一个典型的package.json文件内容(这是underscore的package.json文件,有删减)如下:
{ "author": { "name": "Jeremy Ashkenas", "email": "jeremy@documentcloud.org" }, "bugs": { "url": "https://github.com/jashkenas/underscore/issues" }, "dependencies": {}, "description": "JavaScript's functional programming helper library.", "devDependencies": { "docco": "*", "eslint": "0.6.x" }, "directories": {}, "gitHead": "e4743ab712b8ab42ad4ccb48b155034d02394e4d", "homepage": "http://underscorejs.org", "keywords": [ "util", "functional", "server" ], "license": "MIT", "main": "underscore.js", "maintainers": [ { "name": "jashkenas", "email": "jashkenas@gmail.com" }, { "name": "jridgewell", "email": "justin+npm@ridgewell.name" } ], "name": "underscore", "repository": { "type": "git", "url": "git://github.com/jashkenas/underscore.git" }, "version": "1.8.3" }
以下对主要的字段进行说明:
- Name:包的名字。
- Repository:包存放的仓库地址。
- Keywords:包的关键字,有利于别人通过搜索找到你的包。
- License:遵循的协议。
- Maintainers:包的维护者。
- Author:包的作者。
- Version:版本号,遵循版本命名规范。
- Dependencies:包依赖的其他包。
- devDependencies:包开发阶段所依赖的包。
- homepage:包的官方主页。
当然以上仅仅是列举了最常见的字段,所有字段的说明读者可以在网站https://docs.npmjs.com/files/package.json上找到。