5.npm包

news2025/2/26 5:55:56

文章目录

    • @[TOC](文章目录)
  • 3.npm与包
    • 3.1.包
    • 3.2.npm体验
    • 在项目中安装包的命令
    • 包管理配置文件
    • 一次性安装开发项目时安装的包
    • 如何从项目中卸载包
    • devDependencies节点的作用
    • 解决下载包速度比较慢的问题
    • nrm工具,利用其提供的终端命令,可以快速查看和切换下包的镜像源
    • 包的分类
      • 全局包
      • i5ting_toc
      • 规范的包结构
    • 如何开发包
      • 需要实现的功能
      • 初始化package.json文件
      • index.js文件中定义对应的方法
      • 测试是否可以初始化时间
      • 在入口文件index.js中定义转义标签的函数
      • test.js文件中
      • 将转换后的标签转为标签
    • 将不同的功能进行模块化划分
      • 新建文件夹src里面放对应每个方法的js文件,在入口文件index.js文件中`require`关键字引入对应的js文件,再对外暴露,供外部使用就可以了
    • 如何发布npm包
    • 发布包命令 npm publish

3.npm与包

3.1.包

🥞包的来源:不同于内置模块与自定义模块,包是第三方个人或团队开发出来的,免费供所有人使用的。
🚕原因:由于内置模块仅提供了一些底层的API,导致在基于内置模块进行项目开发时,效率会很低。
🌮基于内置模块封装了更高级、更方便的api,随之效率也会提高。
🍕从哪里下载包,npmjs.com网站

3.2.npm体验

格式化时间的传统作法

  • 定义格式化时间的模块

15.dateFormat.js

//定义格式化时间的方法
function dateFormat(dtStr){
	const dt = new Date(dtStr);
	 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
}
  • 引入格式化时间模块
const TIME = require('./15.dateFormat');
const dt = new Date();
console.log(TIME.dateFormat(dt));

较麻烦,如果使用第三方封装好的包,则简化了很多步骤,只需安装对应的包,再引入使用即可

在项目中安装包的命令

🥟如果想在项目中安装指定名称的包,需要执行以下命令即可

npm insatll 包的完整名称

在项目中新建文件,moment案例.js

//1.导入需要的包
//注意:导入的名称,就是装包时候的名称
const moment = require('moment');
const time = moment().format('YYYY-MM-DD HH:mm:ss'); //获取当前时间
console.log(time) //输出当前时间;

🌯如何安装指定版本的包
需要在包名称后面加上@具体版本号即可
🧀包的语义化版本规范
包的版本号是以"点分十进制"形式定义的,总共有三个数字,例如1.10.2

包管理配置文件

🍕npm规定,在项目根目录中,必须提供一个package.json的包管理配置文件。用来记录与项目有关的一些配置信息。如:

  • 项目名称、版本号、描述等
  • 项目中用到了哪些包
  • 哪些包只在开发期间会用到
  • 哪些包在开发和部署时都会用到
  • 也解决了多人协作而产生的问题

当团队多人开发时,由于第三方包占用空间较大,团队成员需要重新安装即可

一次性安装开发项目时安装的包

执行命令npm i即可

如何从项目中卸载包

执行命令npm uninstall 包名字

devDependencies节点的作用

记录在开发环境中安装的包

解决下载包速度比较慢的问题

🍔切换npm的下包镜像源(就是下包的服务器地址)

//1.查看当前的下包镜像源
npm config get registry
//2.将下包的镜像源切换为淘宝镜像源
npm config set registry=https://registry.npm.taobao.org/
//3.检查镜像源下载是否成功
npm config get registry

在这里插入图片描述

nrm工具,利用其提供的终端命令,可以快速查看和切换下包的镜像源

//把nrm安装为全局可用的工具
npm i nrm -g
//查看所有可用的镜像源
nrm ls
//将下载的镜像源切换为taobao镜像
nrm use taobao

包的分类

全局包

🧨在执行了npm i命令时,如果提供了-g参数,则会把包安装为全局包
全局包会被安装到C:\Users\用户目录\AppData\Roaming\npm\node_modules目录下

i5ting_toc

🌮可以把md格式的文档转转化为html格式的小工具

规范的包结构

一个规范的包,它的组成结构,必须符合以下3点要求:

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

如何开发包

需要实现的功能

//🍔1.导入包
const dkc = require('dkc-utils') 
//2.转义html中的特殊字符------
const htmlStr = ' <h1 style="color:red;">你好!&copy;<span>小黄!</span></h1>'
const str = dkc.htmlEscape(htmlStr)
console.log(str)
//&lt;h1 style=&quot;color:red;&quot;&gt;你好!&amp;copy;&lt;span&gt;小黄!&lt;/span&gt;7lt;/h1&gt;
//3.console.log(str)

🍕2.初始化包的基本结构

  • 1.新建一个文件夹,在这个文件夹中,新建如下三个文件:
  • package.json(包管理配置文件)
  • index.js(包的入口文件)
  • README.md(包的说明文档)

初始化package.json文件

{
{
    "name": "chenshen-tools",
    "version": "1.0.0",
    "description": "提供了时间初始化,HTMLEscape的功能",
    "main": "index.js",
    "license": "ISC"
}
}

index.js文件中定义对应的方法

//入口文件
//定义格式化时间的函数
function dateFormat(date) {

    const dt = new Date(date);

    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(num) {
    return num > 9 ? num : '0' + num;
}
module.exports = {
    dateFormat
}

测试是否可以初始化时间

新建test.js文件

const tools = require('./index.js');
const str = tools.dateFormat(new Date(), 'YYYY-MM-DD HH:mm:ss')
console.log(str);

在入口文件index.js中定义转义标签的函数

//转义字符
function escapeChar(htmlStr) {
return htmlStr.replace(/[<>&*]/g,(match) => {
        switch (match) {
            case '<':
                return '&lt;'
            case '>':
                return '&gt;'
            case '"':
                return '&quot;'
            case '&':
                return '&amp;'

        }
    })

}
module.exports = {
dateFormat,escapeChar
}

test.js文件中

const htmlStr ='<h1 class="title">这是h1标题<span class="red">红色span&nbsp;</span></h1>'
const str2 = tools.escapeChar(htmlStr)
console.log(str2);

将转换后的标签转为标签

function htmlUnEscape(str){
	return str.replace(/&lt;|&gt;|&quot;|&amp;/g,(match)=>{
	switch(match){
		case '&lt;':
		return '<'
		case '&gt;':
		return '>'
		case '&quot;':
		return '"'
		case '&amp;':
		return '&' 
	}
})
}
module.exports = {
	dateFormat,escapeChar,htmlUnEscape
}

将不同的功能进行模块化划分

新建文件夹src里面放对应每个方法的js文件,在入口文件index.js文件中require关键字引入对应的js文件,再对外暴露,供外部使用就可以了

在这里插入图片描述

如何发布npm包

  • 1.注册npm账号
    在这里插入图片描述

发布包命令 npm publish

  • 在终端中登录npm,(而不是镜像地址的npm)发布对应的包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2265163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dots 常用操作

游戏中有多个蚂蚁群落&#xff0c;每个蚂蚁属于一个群落&#xff0c;如何设计数据结构&#xff1f; 方法1&#xff1a;为蚂蚁组件添加一个属性 ID&#xff0c;会造成逻辑中大量分支语句&#xff0c;如果分支语句逻辑不平衡可能带来 Job 调度问题&#xff0c;每个蚂蚁会有一份蚂…

HTML与数据抓取:GET与POST方法详解

讲GET和POST就不能只讲GET和POST 你要讲HTTP请求的基本概念&#xff1a; HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最为广泛的一种网络协议&#xff0c;主要用于Web浏览器与Web服务器之间的数据通信。HTTP是一个基于…

Android 之 Activity 的启动模式(launchMode)

一、Activity 启动模式 在实际项目中&#xff0c;应该根据项目的实际需要来为每个 Activity 指定恰当的启动模式 launchMode。启动模式一共有四种&#xff0c;分别是 standard、singleTop、singleTask 和 singleInstance。可以在 AndroidManifest.xml 中通过给 <activity&g…

软考:系统架构设计师教材笔记(持续更新中)

教材中的知识点都会在。其实就是将教材中的废话删除&#xff0c;语言精练一下&#xff0c;内容比较多&#xff0c;没有标注重点 系统架构概述 定义 系统是指完成某一特定功能或一组功能所需要的组件集&#xff0c;而系统架构则是对所有组件的高层次结构表示&#xff0c;包括各…

大模型应用—IOPaint 图片去水印

IOPaint 是由 SOTA AI 模型提供支持的免费开源修复和修复工具,可以轻松实现图片去水印,去除图片不需要的部分,是目前效果最好的一个项目!完全免费开源 IOPaint 已经托管到 hugging face上,打开就可以直接免费使用,需要外网环境! 在线免费使用:【链接直达】 如果你需要…

Go C编程 第6课 无人机 --- 计算旋转角

旋转的秘密---认识角度 rt、lt命令学习 goc电子课程 一、编程步骤 第一步 第二步 第三步 第四步 二、画“四轴无人机” &#xff08;一&#xff09;、画第一根机轴 &#xff08;二&#xff09;、画第二根机轴 &#xff08;三&#xff09;、画完整的无人机 三、画“多轴无人…

v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。

一、背景、目的、简介。 一般来说&#xff0c;通过uboot将屏幕参数传给kernel&#xff0c;是通过修改设备树。 uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。 在这里&#xff0c;我先是找到了一个裸机点屏的代码。将其编译成静态库后&#x…

【编译原理】编译原理知识点汇总·语法分析器(消除左递归、消除二义性、自顶向下语法分析、自下向上语法分析)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;编译原理_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …

golang 并发--goroutine(四)

golang 语言最大的特点之一就是语法上支持并发&#xff0c;通过简单的语法很容易就能创建一个 go 程&#xff0c;这就使得 golang 天生适合写高并发的程序。这一章节我们就主要介绍 go 程&#xff0c;但是要想完全理解 go 程我们需要深入研究 GPM 模型&#xff0c;关于 GPM 模型…

Wireshark协议相关功能:过滤、启用/禁用、导出和统计查看

简述 Wireshark 是一个非常强大的网络分析工具&#xff0c;广泛用于网络故障排查、安全分析、协议分析等任务。在使用 Wireshark 进行网络抓包和协议分析时&#xff0c;掌握一些基本的操作技巧对于提高效率和准确性至关重要。本文将介绍 Wireshark 中如何进行协议相关的操作&a…

渗透Vulnhub-DC-9靶机

本篇文章旨在为网络安全渗透测试行业靶机教学。通过阅读本文&#xff0c;读者将能够对渗透Vulnhub系列DC-6靶机有定的了解 一、信息收集阶段 DC-9靶场信息: DC-9靶场介绍&#xff1a; https://www.vulnhub.com/entry/dc-9,412/ DC-9靶场下载&#xff1a; https://download.vu…

【Linux系列】Shell 命令:`echo ““ > img.sh`及其应用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

云图库平台(三)——后端用户模块开发

需求分析&#xff1a;对于用户模块而言&#xff0c;通常要实现下列功能&#xff1a; 用户注册&#xff1a;用户输入账号、密码、确认密码进行注册账号用户登录&#xff1a;用户通过输入账号、密码登录注册账号获取当前登录用户信息&#xff1a;即得到当前已登录用户的信息用户…

怎么设置电脑密码?Windows和Mac设置密码的方法

为电脑设置密码是保护个人信息安全的重要措施。无论是Windows系统还是MacOS系统&#xff0c;设置密码的步骤都相对简单&#xff0c;但需要根据不同的操作系统选择不同的方法。 一、Windows系统电脑密码设置 方法一&#xff1a;通过控制面板设置账户密码 点击桌面左下角的“开…

思考: 与人交际

前晚可能是因为我和某个曾经的同学&#xff08;我认为是朋友&#xff0c;但是它真的很讨厌&#xff0c;现在觉得它在PUA很多人&#xff09;发生了一件事情&#xff0c;现在没关系了&#xff0c;算是到此结束了&#xff0c;再也不见。 让我看清楚了人和人的交际需要什么&#xf…

突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除

GitLab停止为中国大陆、香港和澳门地区提供服务&#xff0c;要求用户在60天内迁移账号&#xff0c;否则将被删除。这一事件即将引起广泛的关注和讨论。以下是对该事件的扩展信息&#xff1a; 1. 背景介绍&#xff1a;GitLab是一家全球知名的软件开发平台&#xff0c;提供代码托…

vulnhub靶场-matrix-breakout-2-morpheus攻略(截止至获取shell)

扫描出ip为192.168.121.161 访问该ip&#xff0c;发现只是一个静态页面什么也没有 使用dir dirsearch 御剑都只能扫描到/robots.txt /server-status 两个页面&#xff0c;前者提示我们什么也没有&#xff0c;后面两个没有权限访问 扫描端口&#xff0c;存在81端口 访问&#x…

美股开户网:谷歌搜索迎“大动作”:推出AI模式切换选项应对竞争压力

谷歌的AI战略新举措 近日&#xff0c;硅谷权威媒体《The Information》报道了谷歌即将在其搜索引擎中推出一项全新的功能——“切换到AI模式”。这一新功能将为用户提供更加智能、对话式的回答&#xff0c;标志着谷歌对人工智能&#xff08;AI&#xff09;领域的进一步布局&am…

如何在window 使用 conda 环境下载大模型

最近开始学习 变形金刚&#xff0c;最大的问题就是 huggingface 无法访问&#xff0c;无论是翻墙还是通过本地镜像网站HF-Mirror&#xff0c;然后再通过git下载都很慢&#xff0c;影响学习进度&#xff0c;后面看了如下文章&#xff0c;Huggingface配置镜像_huggingface镜像-CS…

WebRTC学习二:WebRTC音视频数据采集

系列文章目录 第一篇 基于SRS 的 WebRTC 环境搭建 第二篇 基于SRS 实现RTSP接入与WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建 第四篇 WebRTC 学习一&#xff1a;获取音频和视频设备 第五篇 WebRTC学习二&#xff1a;WebRTC音视频数据采集 文章目录 系列文章…