Node.js中的npm与包

一、包

1.包是什么?

Node.js中的第三方模块又叫做包

2.包是干啥的?

由于Node.js的内置模块仅仅提供了一些底层的API,导致内置模块进行项目开发时,效率很低。包是基于内置模块封装出来的,提供更高级的API,极大地提高了开发效率。

3.包的下载

当在终端执行npm -v命令,查看自己电脑上安装的npm包管理工具的版本号,若成功显示,即可以使用npm命令下载想要的包了。

二、npm初体验

1.在项目中安装包的命令

npm insatll 包的完整名称

简写格式

npm i完整包的名称

2.eg:对时间格式化

//1.导入需要的包
//2.导入的名称,就是装包时候的名称
const moment = require('moment')
const dt = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt);

3.安装指定版本的包

默认情况下,使用npm指令安装的时候,会自动安装最新版本的包,如果安装指定版本的时候,通过@符号指定具体版本
如:npm i moment@2.22.2

三、包管理配置文件

1.如何记录项目中安装了哪些包

项目根目录中,创建一个叫做package.json的配置文件,即可以用来记录项目中安装了哪些包,从而方便剔除node_modules目录之后,在团队成员之间共享项目的源代码
快速创建package.json:

npm init -y

此命令只能在英文的目录下成功运行,目录中不要有空格。

2.一次性安装所有的包

可以运行npm install命令一次性安装所有的依赖包。
执行这个命令时,npm创建管理工具会先读取package.json中的dependencies节点,读取到记录的所有依赖包的名称和版本号之后,npm包管理工具会把这些包一次性下载到项目中。

3.devDependencies节点与dependencies节点

项目开发阶段会用到的包,在上线之后不会用到,记录在devDependencies.某些包在开发和项目上线之后都需要用到,则建议把这些包记录到dependencies节点中。
安装指定包,记录到devDependencies节点中(简写形式):

npm i 包名 -D

完整形式

npm install 包名 --save-dev

4.nrm

方便切换下载包的镜像源
npm i nrm -g (通过npm包管理器,将nrm安装为全局可用的工具)
nrm ls (查看所有可用的镜像源)
nrm use taobao(将下载包的镜像切换为taobao镜像)

5.包的分类

5.1.项目包

安装到项目node_modules目录中的包

  • 开发依赖包:记录到devDependencies节点中的包,只在开发期间用到(npm i 包名 -D
  • 核心依赖包:记录到dependencies节点中的包,在开发和项目上线之后都会用到(npm i 包名)

5.2.全局包

只有工具性质的包才有全局安装的必要,如nrm
在执行 npm install命令时,若提供了-g参数,会把包安装成全局包。
路径:C:\Users\用户名\AppData\Roaming\npm\node_modules
指令:npm i 包名 -g

6.规范的包结构

  • 包必须以单独的目录而存在
  • 包的顶级目录下必须要包含package.json这个包管理配置文件
  • package.json中必须有name,version ,main这三个属性,分别代表包的名字、版本号、入口文件

四、开发属于自己的包

1.创建包

eg:格式化时间
package.json文件格式初始化代码如下

{
    "name": "itheima-tools",
    "version": "1.0.0",
    "main": "index.js",
    "description": "提供了格式化事件",
    "keywords": [
        "itheima",
        "dataFormat",
        "escape"
    ],
    "license": "ISC"
}

入口文件index.js内容:

//这是包的入口文件
//定义格式化事件的方法
function dateFormat(dateStr) {
    const dt = new Date(dateStr)
    const y = dt.getFullYear()
    const m = padZero(dt.getMonth() + 1)
    const d = padZero(dt.getDate())
    const hh = padZero(dt.getHours())
    const mm = padZero(dt.getMinutes())
    const ss = padZero(dt.getSeconds())
    return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
//定义一个补零的函数
function padZero(n) {
    return n > 9 ? n : '0' + n
}
//向外暴露需要的成员
module.exports = {
    dateFormat
}

测试代码如下test.js:

const itheima = require('./index')
    //格式化时间功能
const dtStr = itheima.dateFormat(new Date())
console.log(dtStr);

测试结果:
在这里插入图片描述

2.发布包

先在npm官网注册:https://www.npmjs.com/

注册完毕在vscode终端进行登录
在这里插入图片描述

把包发布到npm网站上
将终端切换到包的根目录之后,运行npm publish命令,即可将包发布到npm上(包名不能雷同)
删除已发布的包
运行npm unpublish 包名 --force命令,即可删除已经发布的包(72小时内发布的包可以删除)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值