爬虫工程师也应该会的 NodeJS 知识(二)
NPM 是什么?
在了解 NPM 之前,我们需要理解 NodeJS 中包和模块是什么?
简单来说,一个模块是一个单独的文件, 一个包中可以有一个或多个模块。
而在 NodeJS 中为了方便开发人员发布、安装和管理包,,NodeJS 推出了一个包管理工具 NPM ( Node Package Manager )。
NPM 不需要我们单独安装,只要搭建好 NodeJS 环境就已经自动安装好了
NPM就相当于电脑上的软件管家,通过 NPM 我们可以快速找到我们需要的包,可以快速安装我们需要的包, 可以快速删除我们不想要的包等等。
NPM 的使用
NPM 包的安装方式
1、全局安装
全局安装一般用于安装全局使用的工具,存储在全局 node_modules 中。
# 安装包
npm install -g 包名 # 默认安装最新版本
# 卸载包
npm uninstall -g 包名
# 更新包
npm update -g 包名 # 更新失败可以直接使用install
2、本地安装
本地安装一般用于安装当前项目使用的包, 存储在当前项目node_modules中
# 安装包
npm install 包名
# 卸载包
npm uninstall 包名
# 更新包
npm update 包名
关于 NPM 中的 package.json
在我们创建一个项目的时候,我们项目目录下是没有 package.json 这个文件的,所以我们初始化本地包后可以自动生成
npm init
我们可以打开这个文件来看看文件的内容
在包描述文件 package.json 中定义了当前项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境
注意点:package.json 文件中, 不能加入任何注释
在 package.json 中有两个配置项需要我们注意:
- dependencies:生产环境包的依赖,一个关联数组,由包的名称和版本号组成
- devDependencies:开发环境包的依赖,一个关联数组,由包的名称和版本号组成
当我们在安装包时使用
npm install 包名 --save安装的包名会在
dependencies这个配置项中体现出来。
当我们在安装包时使用
npm install 包名 --save-dev安装的包名会在
devDependencies这个配置项中体现出来。
当我们将项目拷贝给其它人,或者发布的时候,我们不会将项目中的 node_modules 也给别人,因为太大,而且有的包可能只在开发阶段需要,但是在上线阶段不需要,所以需要分开指定
所以在将项目发布的时候可以使用下面的命令来配置对应的环境
npm i 所有的包都会被安装
npm i --production 只会安装dependencies中的包
npm i --development 只会安装devDependencies中的包
这就时 NPM 方便的地方。
下载 Node 包太慢怎么办?
不少读者在使用 NPM 的时候面临一个问题就是使用 NPM 安装包太慢了,可以试试使用 nrm
方法一 - nrm
由于 npm 默认回去国外下载资源, 所以对于国内开发者来说下载会比较慢所以就有人写了一个nrm工具,允许你将资源下载地址从国外切换到国内。
具体使用可以试试下面的命令
npm install -g nrm # 安装NRM
nrm --version #查看是否安装成功
npm ls # 查看允许切换的资源地址
npm use taobao #将下载地址切换到淘宝
使用方式直接使用 npm install 包名 即可。
方法二 - cnpm
cnpm 就是将下载源从国外切换到国内下载, 只不过是将所有的指令从npm变为cnpm而已
npm install cnpm -g –registry=https://registry.npm.taobao.org # 安装CNPM
cnpm -v # 查看是否安装成功
使用方式同 npm, 例如:
npm install jquery变成
cnpm install jquery即可
其实除了 npm 外,Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 Yarn 。
Yarn 是为了弥补 npm5.0之前 的一些缺陷而出现的,不过对于爬虫工程师来说,npm 已经完全够用了。
Love & Share
[ 完 ]
- 爬虫工程师也应该会的 NodeJS 知识(一)
- 每个前端工程师都应该了解的图片知识(长文建议收藏)
- 网络工程师应该掌握的知识要点
- 月薪45K的Python爬虫工程师告诉你爬虫应该怎么学,太详细了!
- 一个好的硬件工程师应该具备哪些基本知识和能力呢?
- 前端开发工程师应该知道的http协议知识
- 谈谈Java工程师应该具有的知识
- android高级工程师应该会的知识
- 每个前端工程师都应该了解的图片知识
- 月薪45K的Python爬虫工程师告诉你爬虫应该怎么学,太详细了!
- 测试工程师应该具备的知识体系
- 【软件测试基础知识】好的测试工程师应该具备什么(下)
- 【软件测试基础知识】好的测试工程师应该具备什么(上)
- android高级工程师应该会的知识
- 合格的安卓开发工程师应该具备的开发知识体系
- 谈谈Java工程师应该具有的知识
- Java工程师应该掌握的相关知识(基础篇01)
- 网络工程师应该掌握的44个路由器问题知识要点
- 网络工程师应掌握的50个路由器知识要点
- [程序员应该知道的]硬盘基本知识(一)