npm发布自己的组件组件/插件包

前言

在项目开发过程中,我们经常会用到一些工具函数。虽然像lodash这样的库提供了丰富的功能,但其体积较大,有时我们更倾向于使用自己封装的轻量函数库。这篇博客将以创建并发布一个工具函数库为例,详细介绍如何在npm上发布自己的包。

一、准备工作

1. 官网注册

首先,需要在npm官网注册一个npm账户。

  • 官网
  • 创建账号入口

注意:注册后需要通过邮箱验证账户。

2. 创建函数库目录及初始化

创建好账号后,我们来新建并初始化函数库目录。

# 创建目录
mkdir js-util-libs# 进入目录
cd js-util-libs/# 目录初始化
npm init
3. 文件内容及目录结构
package.json

package.json文件中,name字段的值应与项目名称一致。以下是一个示例:

{"name": "js-util-libs","description": "JS 常见的函数工具库","version": "1.2.5","author": "fuzhaoyang <932647051@qq.com>","license": "MIT","main": "index.js","files": ["index.js","src"],"private": false,"scripts": {"test": "jest","watch": "jest --watchAll","coverage": "jest --coverage"},"keywords": ["js-util-libs","debounce","throttle"],"homepage": "https://github.com/fuzhaoyang/js-util-libs.git","repository": {"type": "git","url": "git+https://github.com/fuzhaoyang/js-util-libs.git"},"publishConfig": {"registry": "https://registry.npmjs.org/"},"dependencies": {"jest": "^26.0.1"},"devDependencies": {"husky": "7.0.2"}
}
index.js

编写入口文件,导出需要的函数。以下是一个示例:

// index.js
export { debounce, throttle } from "./src/throttle_debounce/index.js";
目录结构

项目的目录结构如下:

js-util-libs/
├── src/
│   └── throttle_debounce/
│       └── index.js
├── index.js
├── package.json
├── README.md

各文件的作用:

  • src/:存放工具函数。
  • index.js:入口文件。
  • package.json:npm包配置文件。
  • README.md:包说明文档。

二、如何发布

1. 添加用户

在项目根目录下运行npm adduser命令,添加用户信息。

npm adduser

如果已经注册过账号,直接登录即可。

2. 登录

运行npm login命令,输入用户名、密码、邮箱。

npm login
3. 发布包

使用npm publish命令发布包。

npm publish

发布完成后,可以在自己的npm包列表中看到发布的包,同时注册邮箱会收到发布成功的通知。

4. 注意事项

如果发布过程中遇到错误 npm ERR! code ENEEDAUTH,需要确保package.json中的publishConfig设置正确:

"publishConfig": {"registry": "https://registry.npmjs.org/"
}

三、如何使用

现在,我们的包已经在npm上了,可以在项目中直接安装并使用。

npm i js-util-libs

在项目中导入使用:

// 引用
import { deepCopy } from 'js-util-libs';// 使用
const obj = { aa: 1, b: '52' };
const text = deepCopy(obj);

四、如何删除发布的包

如果发布的包不想用了,可以使用以下命令删除包:

npm --force unpublish js-util-libs

注意:超过24小时后不能删除包。

五、如何废弃包

可以标记包为废弃,用户在安装时会收到提示:

npm deprecate --force js-util-libs@1.0.0 "这个包不再维护了。"

六、如何更新包

需要先在package.json中修改版本号,然后再次发布:

npm publish

七、总结

本文介绍了如何创建并发布一个npm包的详细过程。你可以根据需要创建自己的函数库,并将其分享给更多人。

  • js-util-libs的git仓库地址
  • npm地址

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

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

相关文章

动态二维码与静态二维码,有何区别,如何使用?

近年来&#xff0c;二维码势不可挡席卷而来&#xff0c;并在我们的生活中占据了一席之地&#xff0c;付款、加好友、点餐、活动签到、电子门票、商品信息查询、分享内容等等&#xff0c;哪都有它。 二维码诞生于日本&#xff0c;就是用特定几何图形&#xff0c;按规律在平面上分…

使用python绘制华夫饼图

使用python绘制华夫饼图 华夫饼图效果代码 华夫饼图 华夫饼图&#xff08;Waffle Chart&#xff09;是一种数据可视化图表&#xff0c;用于显示数据在一个网格中的分布情况。它类似于饼图&#xff0c;通过将数据划分为等大小的方块来表示不同类别的比例。华夫饼图的优势在于它…

Python编程学习第一篇——Python零基础快速入门(五)—集合

前面几节介绍了元组、列表&#xff0c;今天我们来学习集合。 Python中的集合&#xff08;set&#xff09;是一种无序的、可变的、没有重复元素的数据类型。集合是由一对花括号{}括起来的元素组成&#xff0c;每个元素之间用逗号分隔。 以下是集合的一些常见操作&#xff1a; …

解决 Mac Django 连接Mysql 出现 image not found 问题

最近在使用 Django 框架&#xff0c;因为升级到4.2版本了&#xff0c;对应的本机 Mysql 5.7 就不适用了&#xff0c;于是升级到了 Mysql 8.0&#xff0c;写好代码之后出现如下错误&#xff1a; 仔细分析一下错误的描述&#xff1a; ImportError: dlopen(/Library/Frameworks/P…

1122 找奇葩

solution 目标数&#xff1a;出现次数为奇数次&&该数本身为奇数 #include<iostream> using namespace std; const int maxn 1e5 10; int flag[maxn] {0}; int main(){int n, x;scanf("%d", &n);for(int i 1; i < n; i){scanf("%d&qu…

GPT-4o:智能新纪元的破晓

在人工智能领域&#xff0c;每一次技术的飞跃都伴随着无数目光的聚焦和期待。最近&#xff0c;GPT-4o的问世无疑成为了科技界的一颗耀眼的新星。作为OpenAI继GPT-3之后的又一力作&#xff0c;GPT-4o不仅承载了前代模型的优良基因&#xff0c;更在多个维度上实现了质的飞跃。 首…

EIS 2019 webshell

请求中可以确定是http POST流量 同时可以判断是 蚁剑的流量 进一步过滤 http.request.method "POST" 直接追踪其tcp流 得到 列举部分 eVAl(cHr(0x40).ChR(0x69).ChR(0x6e).ChR(0x69).ChR(0x5f).ChR(0x73).ChR(0x65).ChR(0x74).ChR(0x28)直接输出一下 内容 <…

DeepMind:从LLMs到VLMs,不用看图就能理解图?

论文标题&#xff1a; FlexCap: Generating Rich, Localized, and Flexible Captions in Images 论文作者&#xff1a; Debidatta Dwibedi, Vidhi Jain, Jonathan Tompson, Andrew Zisserman, and Yusuf Aytar 参与机构&#xff1a; Google DeepMind, Carnegie Mellon Uni…

【Power Compiler手册】8.生成功耗报告

生成功耗报告 本节包含使用 `report_power` 命令生成的报告示例。 在topographical下,`report_power` 命令报告相关功耗,包括估计的时钟树功耗和网络表功耗。如果工具无法执行时钟树估计,Power Compiler 工具会发出警告,指出无法执行时钟树估计。 功耗报告的示例如下: …

C语言--toupper/tolower/isupper/islower函数介绍

介绍 toupper&#xff08;&#xff09; 是一个用于将字符转换为大写的 C/C 函数&#xff0c;它位于 头文件中。使用 toupper 函数很简单&#xff0c;只需要将要转换的字符作为参数传递给它即可。 同理&#xff1a;tolower&#xff08;&#xff09;是将一个字符转换为小写的函数…

Quantlab 4.1:基于Deap遗传算法多股票因子挖掘

原创文章第549篇&#xff0c;专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 遗传算法本身并不复杂&#xff0c;但gplearn的实现&#xff0c;把问题复杂化了&#xff0c;尤其在因子挖掘这个场景。 使用deap进行因子挖掘的代码在如下位置&#xff1a; import …

企微语音群发软件:开启企业沟通新纪元

在数字化、智能化的今天&#xff0c;企业沟通方式也在不断地迭代和升级。企业微信&#xff08;企微&#xff09;作为企业内部沟通和外部拓展的重要工具&#xff0c;其功能的丰富性和便捷性为企业带来了诸多便利。其中&#xff0c;企微语音群发软件的出现&#xff0c;更是为企业…

consul数据持久化

一、下载consul 下载链接:Install | Consul | HashiCorp Developer 启动&#xff1a; 这里以windows系统为例&#xff0c;需要在consul.exe目录执行 #查看版本号&#xff1a; consul -version #启动命令&#xff1a; consul agent -dev 访问地址&#xff1a;http://localh…

Nexus3(nexus-3.19.1-01)忘记管理员密码

1、停服 ./nexus stop 2、进入OrientDB控制台&#xff1a; cd /apply/nexus3/nexus-3.42.0-01/lib/support/ java -jar ./nexus-orient-console.jar 3、在控制台执行&#xff1a; connect plocal:/apply/nexus3/sonatype-work/nexus3/db/security admin admin 4、重置密码…

前端工程化工具系列(七)—— PNPM(v9.1.4):高性能的 NPM 替代品

PNPM&#xff08;Performant NPM&#xff09;是一个高效的 NPM 包管理器&#xff0c;它使用硬链接和符号链接来减少磁盘空间的使用&#xff0c;并提高了安装速度。 1. 环境要求 v9 的 PNPM 需要 Node.js v18。 2. 安装 npm i -g pnpm3 基本功能 3.1 安装包 安装单个包&am…

【postgresql初级使用】触发器的创建删除,你不知道的触发器函数中的系统变量,数据一致性还可以这样来保证

使用触发器 ​专栏内容&#xff1a; postgresql使用入门基础手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 文章目录 使用触发器概…

Redis之常用实战场景

1.Redis数据丢失场景 1.1 持久化丢失 采用RDB或者不持久化&#xff0c;就会有数据丢失&#xff0c;因为是手动或者配置以快照的形式来进行备份。 解决: 启用AOF&#xff0c;以命令追加的形式进行备份&#xff0c;但是默认也会有1s丢失&#xff0c;这是在性能与数据安全性中寻…

K-means聚类模型算法

K-means聚类是一种无监督的机器学习算法&#xff0c;用于将数据点划分到K个不同的簇中。这种算法的目标是最小化簇内的方差&#xff0c;即使得每个簇内的数据点与簇中心的距离尽可能小。以下是K-means聚类模型的主要步骤和特点&#xff1a; 主要步骤&#xff1a; 1. 选择K值&…

深入解析Spring Cloud Config:构建高可用分布式配置中心

在微服务架构中&#xff0c;配置管理是一个关键问题。Spring Cloud Config提供了一种解决方案&#xff0c;它是一个高可用、分布式的外部配置中心。本文将深入探讨Spring Cloud Config的原理、架构及其在实际项目中的应用&#xff0c;帮助读者掌握如何构建一个高效、可靠的分布…

SD NAND(贴片式TF卡)在储能领域的应用

储能系统&#xff08;Energy Storage System&#xff0c;简称ESS&#xff09;是指能将电能以化学能、势能、动能等形式储存起来&#xff0c;并在需要时将其转化为电能供应给用户的设备。主要由电池管理系统&#xff08;BMS&#xff09;、能量管理系统&#xff08;EMS&#xff0…