node.js——npm与包

什么是包

Node.js 中的第三方模块又叫做包,不同于 Node.js 中的内置模块与自定义模块,包是由第三方个人或者团队开发出来的,免费供所有人使用。
Node包管理器(NPM)可以让你在项目中轻松地对模块进行管理,它会下载指定的包、解决包的依赖、运行测试脚本以及安装命令行脚本。

npm

npm,Inc. 公司提供了一个包下载工具——npm,这个工具随着我们下载安装 Node.js 时一起安装到了用户的电脑上。我们在终端内输入 npm -v 就可以来查看自己电脑上 npm 包管理工具的版本号了。

包管理配置文件

npm 规定,在项目根目录中,必须提供一个叫做 package.json 的包管理配置文件。用来记录与项目有关的一些配置信息。比如说包的名称、版本号等。

设置 npm 镜像

因为 npm 的服务器在国外,众所周知的原因我们在使用普通 npm 下载包的时候经常会发生下载缓慢甚至是下载失败的情况。而淘宝在国内搭建了一个服务器,专门吧国外官方服务器上的包同步到国内的服务器中,然后在国内提供下载包的服务,从而极大地提高了下载包的速度和稳定性。

# 来将下载包的镜像源切换为淘宝镜像源,并在终端内执行
npm config set registry=https://registry.npmmirror.com/
# 来查看镜像源是否转换成功
npm config get registry
# 结果为 https://registry.npmmirror.com/ 表示成功

安装模块

为了展示如何通过 npm 来安装模块,我们创建一个 my-project 目录,安装 colors 模块,然后创建一个 index.js 文件

mkdir my-project
cd my-project
npm install colors

要验证模块是否安装成功,可以在该目录下查看是否有 node_modules/colors 目录。
然后,用你最喜欢的编辑器编辑 index.js 文件

require('colors');
console.log('smashing node'.rainbow);

运行 index.js

node index.js

自定义模块

要自定义模块,你需要创建一个 package.json 文件。通过这种方式来定义模块有三种好处:

  1. 可以很方便地将项目中的模块分享给其他人,不需要将整个 node_modules 目录发给他们。因为有了 package.json 之后,其他人运行 npm install 就可以把依赖的模块都下载下来。
  2. 可以很方便地记录所依赖模块地版本号。举个例子来说,当你的项目通过 npm install colors 安装的是 0.5.0 的 colors。一年后,由于 colors 模块 API 的更改,可能导致与你的项目不兼容,如果你使用 npm install 并且不指定版本号来安装的话,你的项目就没法正常运行了。
  3. 让分享艮简单。如果你的项目不错,你是否想将它分享给别人?因为有 package.json 文件,通过 npm publish 就可以将其发布到 NPM 库中供所有人下载使用了。

在原先创建的目录(my-project)中,删除 node_modules 目录并创建一个 package.json 文件

{
	"name": "my-colors-project",
	"version": "0.0.1",
	"dependencies": {
		"colors": "0.5.0"
	}
}

package.json 文件是从 Node.js 和 NPM 两个层面来描述项目的。其中只有 name 和 version 是必要的字段。通常情况下,还会定义一些依赖的模块,通过使用一个对象,将依赖模块的模块名及版本号以对象的属性和值将其定义在 package.json 文件中。
安装依赖的模块,然后再次运行 index.js 文件

npm install
node index	# 注意,这里的文件名不需要加上“.js”后缀

现在自定义模块是内部使用的。不过,如果想发布出去,NPM 提供了如下这种方式,可以很方便地发布模块

npm publish

当别人使用 require(‘my-colors-project’)时,为了能让 Node 知道该载入哪个文件,我们可以在 package.json 文件中使用 main 属性来指定

{
	"name": "my-colors-project",
	"version": "0.0.1",
	"main": "./index",
	"dependencies": {
		"colors": "0.5.0"
	}
}

当需要让该模块暴露 API 地时候,main 属性就会变得尤为重要,因为你需要为模块定义一个入口(有得时候,入口可能是多个文件)

小贴士:如果你不想发布你得模块,那么在 package.json 中加入 “private”: “true”。这样可以避免误发布。

要查看 package.json 文件所有得属性文档,可以使用如下命令

npm help json
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上行舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值