关于node.js:Nodejs-包管理器-NPM-讲解

29次阅读

共计 2354 个字符,预计需要花费 6 分钟才能阅读完成。

包管理器又称软件包管理系统,它是在电脑中主动装置、配制、卸载和降级软件包的工具组合,在各种系统软件和应用软件的装置治理中均有广泛应用。对于咱们业务开发也很受害,雷同的货色不用反复去造轮子。

每个工具或者开发语言都有相应的包管理器,好比 Ubuntu 的 apt-get、Centos 的 yum、Java 的 Maven 仓库等等。Node.js 中目前最闻名的包管理器为 NPM 也是生态最好的。

什么是 NPM?

NPM 是 Node.js 中的包管理器。容许咱们为 Node.js 装置各种模块,这个包管理器为咱们提供了装置、删除等其它命令来治理模块。这里有一点咱们须要留神,咱们必须要有一个 package.json 文件或 node_modules 目录装置模块到本地。

NPM 最好的一点是它会在本地存储咱们所装置的依赖项,存在于 package.json 的 dependencies 对象里。例如,如果一个模块 X 应用了模块 A 版本为 1.0,模块 Y 应用了模块 A 版本为 1.5,那么模块 X 或 Y 都将在本地领有本人对应的模块 A 的正本。

// 模块 X
{
  "name": "X",
  "dependencies": {"A": "^1.0"}
}
// 模块 Y
{
  "name": "Y",
  "dependencies": {"A": "^1.5"}
}

什么时候须要 NPM 包?

当咱们在开发一些 Node.js 我的项目时,可能会遇到一些中央须要 NPM,例如链接 Redis、MongoDB 或者发送申请 Request 等,有了这些现有模块能够使咱们更专一于业务开发,当然有时你会有些特地的需要,这时可能须要本人去封装一个 NPM 模块,实现模块复用 资源共享

NPM 装置

NPM 不须要独自装置,在咱们装置 Node.js 环境时,NPM 也就装置了,Node.js 环境还没搭建的同学可参考“3N 兄弟”助您实现 Node.js 环境搭建 一节。

终端执行 npm -v 命令查看以后 npm 版本

$ npm -v

5.6.0

NPM 源设置

在国内有时候受限于网络因素的影响,通常在装置一个包管理器之前能够切换为 taobao 源,使得速度能够更快,然而要留神如果是公有模块在 NPM 官网的,则必须切换为官网源,否则会呈现 404 谬误。

查看以后 npm 源

  npm config get registry
  # http://registry.npmjs.org/

切换为 taobao 源

npm config set registry=https://registry.npm.taobao.org

切换为 npm 官网源

在 npm publish 的时候 须要切换回 npm 源

npm config set registry=http://registry.npmjs.org

如何在我的项目中利用

让咱们新建一个我的项目 test,刚开始这是一个空的文件夹

第一步

控制台执行 npm init,依据提醒输出信息,会生成一个 package.json 文件,如下所示:

{
  "name": "test", // 项目名称
  "version": "1.0.0", // 版本号
  "description": "", // 形容"main":"index.js", // 入口文件,默认 index.js"scripts": {"test":"echo \"Error: no test specified\" && exit 1"},"author":"May", // 作者"license":"ISC"
}

第二步

装置 npm 模块,例如咱们装置一个 moment 模块格式化工夫,执行以下命令

npm install moment -S
# or 
npm i moment --save

装置胜利之后,会生成一个新的目录 node_modules 这是用来寄存咱们所装置的模块,另外 package.json 也会发生变化多了一个 dependencies 对象,这个是用来存储咱们的模块版本信息。

"dependencies": {"moment": "^2.24.0"}

看下咱们以后的目录构造:

NPM 注册登录

注册

$ npm adduser
Username: your name
Password: your password
Email: (this IS public) your email

查看以后应用的用户

npm whoami

npm 登录

npm login

公有模块

如果是公司团队或者集体我的项目的公有 npm 包,进行公布的时候要留神下啦,模块的名字要以 @ 符号开始、/符号完结,两头局部为公有包的组织名。例如,@may/logger,may 为组织的名称,logger 为包名。

package.json

{"name": "@may/logger"}

NPM-Module- 公布

进入我的项目根目录,输出命令。

npm publish

常见问题

Questions1

no_perms Private mode enable, only admin can publish this module: coorddistance

这里留神的是因为国内网络问题,许多小伙伴把 npm 的镜像代理到淘宝或者别的中央了,这里要设置回原来的镜像。

npm config set registry=http://registry.npmjs.org

Questions2

Unexpected end of input at 1:3637 npm ERR! egistry.npmjs.org/mkdirp/-/mkdirp-0.3.2.tgz"},"engines":{"node":"*"}

执行命令 npm cache clean --force

Questions3

Node 我的项目部署 公有包报错 404 个别两种状况造成:

  • 查看服务器是否登录 npm 账号
  • 执行命令npm config get registry 查看是否指向 https,没有指向 https 执行命令 npm config set registry=https://registry.npmjs.org

正文完
 0