包管理器又称软件包管理系统,它是在电脑中自动安装、配制、卸载和升级软件包的工具组合,在各种系统软件和应用软件的安装管理中均有广泛应用。对于我们业务开发也很受益,相同的东西不必重复去造轮子。

每个工具或者开发语言都有相应的包管理器,好比 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

Node.js 包管理器 NPM 讲解的更多相关文章

  1. 9.Node.js 包管理器npm

    npm 是 Node.js  官方提供的包管理工具, 用于 Node.js包的发布.传播.依赖控制 安装 express ==> 流行的基于Node.js的Web开发框架,可以快速地搭建一个完整 ...

  2. Node.js包管理器Yarn的入门介绍与安装

    FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在昨天, Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .咱 ...

  3. Node.js包管理器:

    Node.js包管理器: 当我们要把某个包作为工程运行的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装 使用全局模式安装的包并不能直接在JavaScript文件中用require ...

  4. npm --- Node.js包管理器

    目录 1. 安装Node.js 2. 运行npm 3. npm介绍 3.1 安装插件 3.2 更新插件 3.3 卸载插件 3.4 查看当前目录中的插件列表 4. 使用cnpm 4.1 安装 npm( ...

  5. NET Core 静态文件及JS包管理器(npm, Bower)的使用

    NET Core 静态文件及JS包管理器(npm, Bower)的使用 文章目录 在 ASP.NET Core 中添加静态文件 使用npm管理JavaScript包 使用Bower管理JavaScri ...

  6. node.js 安装及配置(hello world)及 node 的包管理器(npm)

    下载地址:Download | Node.js,无脑下一步安装即可: 安装时,会自动将 node 可执行文件路径添加进 Path 内,这样进入 cmd 命令行,以查看 node 的安装版本: > ...

  7. NPM Node.js 包管理

    1.NPM 简介 1.1 NPM Node.js® 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,可方便地构建快速,可扩展的网络应用程序的平台.Node.js 使用事件驱动, ...

  8. nodejs的包管理器npm和cnpm

    http://www.ydcss.com/archives/18 3.npm介绍 3.1.说明:npm(node package manager)nodejs的包管理器,用于node插件管理(包括安装 ...

  9. ASP.NET Core 静态文件及JS包管理器(npm, Bower)的使用

    在 ASP.NET Core 中添加静态文件 虽然ASP.NET主要大都做着后端的事情,但前端的一些静态文件也是很重要的.在ASP.NET Core中要启用静态文件,需要Microsoft.AspNe ...

随机推荐

  1. PPT & order & animation

    PPT & order & animation powerpoint order of appearance https://support.office.com/en-us/arti ...

  2. taro 小程序 & touch event 转换 bug

    taro 小程序 & touch event 转换 bug before after 事件处理 https://nervjs.github.io/taro/docs/event.html#do ...

  3. 交易所频频跑路?Baccarat去中心化交易平台助力资金安全

    过去,黑客攻击可能是交易所跑路的最常见原因.自OKEx事件以来,这些交易所暂停提币或跑路还多了一个原因,就是因创始人正在协助调查. 据不完全统计,自OKEx于10月16日宣布暂停提币后不到两个月,已经 ...

  4. 玩遍博客网站,我整理了 Hugo 及其流行的风格主题

    搭建博客网站是个人进入互联网世界的最常见方式之一.伴随着网站技术的发展,如何搭建博客网站已经变得非常容易了.当然,你可以选择诸如 新浪博客.CSDN.博客园 之类的大型网站,快速创建依赖于大平台的个人 ...

  5. HTML5中对于块级元素和行内元素的总结

    转自:https://www.cnblogs.com/iverson666/p/9169274.html块级元素:块级大多为结构性标记 <address>...</adderss&g ...

  6. DQL:data query language用来查询数据库表中的数据

    对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 如果没有查询条件,则每次查询所有的行.实际应用中,一般要指定查询的条件.对记录进行过滤. 查询 ...

  7. XSS跨站脚本攻击(1)

    将跨站脚本攻击缩写为XSS,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面的时候,嵌入其中的Web里面的Script代码就会被执行,从而达到恶意攻击用户的目的. 反射型XSS 反射 ...

  8. 适配三星Galaxy S8及S8+ 屏幕比例为 18.5:9

    开发者只需在App的AndroidManifest.xml文件<application> </application>中添加如下代码: <meta-data androi ...

  9. 后端程序员之路 52、A Tour of Go-2

    # flowcontrol    - for        - for i := 0; i < 10; i++ {        - for ; sum < 1000; {        ...

  10. 后端程序员之路 26、CAP理论

    可能是CAP理论的最好解释 - 西代零零发 - 博客频道 - CSDN.NEThttp://blog.csdn.net/dc_726/article/details/42784237 CAP理论 - ...