5.npm包

embedded/2024/12/30 6:45:06/

文章目录

    • @[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

npm_2">3.npm与包

3.1.包

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

npm_8">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_237">如何发布npm

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

npm_publish_241">发布包命令 npm publish

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

http://www.ppmy.cn/embedded/149559.html

相关文章

iPhone 17 :史诗级大改,120Hz 全面普及

资深果粉应该都听过一个说法&#xff1a;“iPhone 买单不买双”。这个“规律”似乎在iPhone 16上也得到了印证。 近段时间&#xff0c;各方消息都在指明一点&#xff1a;iPhone 16 只是大餐前的小菜&#xff0c;iPhone 17才是真正带来革命性提升的一代神机。下一代 iPhone 17&…

阿里云人工智能ACP(一)——人工智能与人工智能技术概述

一、人工智能概述 1. 人工智能的定义 人工智能 是利用数字计算机或者由数字计算机控制的机器&#xff0c;模拟、延伸和扩展人类的智能&#xff0c;感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术和应用系统。 2. 人工智能的发展 3. 人工智能的分类 4. 人工智能…

网站前端优化

网站前端优化 主要是介绍了这几个规则。 第一&#xff1a;减少HTTP请求 1: 将超链接关联到图片上&#xff0c;例如在导航栏按钮中。如果是以这种形式关联多个带有超链接的图片&#xff0c;使用图片地图这种方式既能减少HTTP请求&#xff0c;有无需改变页面外观感受。图片地…

Vue.js 高级组件开发:抽象与高性能架构

Vue.js 高级组件开发&#xff1a;抽象与高性能架构 引言一、动态组件与依赖注入1. 动态组件场景 二、高可扩展性的抽象组件模式1. 设计思路2. 案例&#xff1a;抽象数据表组件 三、复杂场景下的异步操作管理1. 使用 Vue Composition API 管理异步逻辑 四、渲染优化与框架底层钩…

微信小程序 不同角色进入不同页面、呈现不同底部导航栏

遇到这个需求之前一直使用的小程序默认底部导航栏&#xff0c;且小程序默认入口页面为pages/index/index&#xff0c;要使不同角色呈现不同底部导航栏&#xff0c;必须要在不同页面引用不同的自定义导航栏。本篇将结合分包&#xff08;subPackages&#xff09;展开以下三步叙述…

202年寒假充电计划——自学手册 网络安全(黑客技术)

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、…

如何在Facebook发布Reels?简单易懂的操作指南

随着短视频风靡全球&#xff0c;Facebook Reels 成为了吸引用户和推广内容的强大工具。无论你是个人创作者还是企业运营者&#xff0c;掌握 Facebook Reels 的发布技巧都能让你的内容更快触达目标受众。本文将详细介绍如何在 Facebook 发布 Reels&#xff0c;帮助你轻松上手这一…

人工智能的发展历程与未来展望

人工智能的发展历程与未来展望 一、人工智能的起源与早期发展 1.1 人工智能的定义与概念起源 人工智能&#xff08;AI&#xff09;的定义与概念起源可追溯至20世纪中叶&#xff0c;当时一群具有远见的科学家和工程师开始探索机器是否能够模拟人类智能行为。1956年&#xff0…