上QQ阅读APP看书,第一时间看更新
2.2 使用npm install
要使用npmjs.org上大量的第三方模块,需要使用npm install命令,这里只介绍最常用的格式。
// 安装模块,默认最新版本 npm install [<@scope>/]<name> // 通过指定tag来安装模块 npm install [<@scope>/]<name>@<tag> // 通过指定版本号来安装模块,如果版本号不存在会失败 npm install [<@scope>/]<name>@<version> // 通过指定版本号的范围来安装模块 npm install [<@scope>/]<name>@<version range>
下面是实际的使用例子。
// 安装angular-cli,默认最新版本 npm install @angular/cli // 安装express 的4.17.1版本(4.17.1是版本号的同时也是tag) npm installl express@4.17.1 // 安装指定版本范围内的koa,默认取上限 npm install koa@">=2.6.0 <2.8.1"
如果一个模块会被很多项目引用,或者一些模块本身提供了命令行工具,如angular-cli或者pm2,那么把这些模块安装在全局环境下是更好的选择。要以全局模式安装,只需要在运行npm install命令时加上-g参数即可,这样就可以在命令行中引用该模块。
// 全局模式安装gulp模块 $ npm install -g gulp // 安装成功后便可以在控制台中使用gulp命令 $ gulp -v CLI version: 2.2.0 Local version: 4.0.2
使用install命令而不带任何参数的情况下会把安装的模块名称和版本号写入package.json的dependencies字段中。使用全局模式安装的模块信息不会出现在package.json中。如果在运行npm install的时候不指定版本号,那么就会默认下载最新的版本。
"dependencies": { "@angular/cli": "^8.3.5", "express": "^4.17.1", "koa": "^2.8.0" }
Node使用语义化的符号来表示模块的版本,表2-1列出了npm的版本号匹配规则。
表2-1 version字段匹配规则
有些在开发阶段用到的第三方模块在生产环境并不需要,如测试脚手架、代码分析库等。为了区分,package.json将第三方模块分成dependencies和devDependencies。
在运行npm install的时候增加--save-dev参数,就会把对应的模块信息写入devDependencies字段中。同时,当代码库上传到生产环境后,运行npm install --production,该命令会忽略devDependencies中的依赖,只安装dependencies字段下定义的模块。
// 将gulp作为devDependency安装 npm install gulp --save-dev
下面是一个完整的package.json文件示例。
{ "name": "etest", "version": "1.0.0", "description": "", "main": "server.js", "directories": { "lib": "lib" }, "dependencies": { "angular": "^1.7.9", "express": "^4.17.1" }, "devDependencies": { "jasmine": "^3.5.0", "gulp": "^4.0.2" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, "keywords": [], "author": "", "license": "ISC" }