创建一个javascript公共方法的npm包,js-tool-big-box,发布到npm上,一劳永逸

news/2024/5/22 2:44:07

前端javascript的公共方法太多了,时间日期的,数值的,字符串的,搞复制的,搞网络请求的,搞数据转换的,几乎就是每个新项目,有的拷一拷,没有的继续写,放个utils目录里,自我还感觉良好,但其实有点不合适,但不复用了。我准备搞一个javascript的公共方法包,里面以后多放一些公共方法。 

 我给他起了个名字叫 js-tool-big-box,意思就是js工具的一个大盒子,魔盒魔盒,啥都能装,也可以叫他 js魔盒。不错不错,npm上还没有这么响亮的包呢!!!

目录

1 目录初始化

2 入口文件

 3 登录账户,准备上传

4 往上推代码 

5 看看传上去了没

6 安装一下 

 7 尝鲜使用 


1 目录初始化

本地新建一个文件夹,用于存放我们的目录,新建后打开cmd窗口,进行npm初始化,也就是新建那个package.json

通过输入package name  version description author等选项,就创建成功了 ,新建后的package.json代码如下:

{"name": "js-tool-big-box","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"author": "xingyu_qie","license": "ISC"
}

2 入口文件

我们看到上面代码中有main入口属性,指向的是index.js,所以我们在项目中新建一个index.js文件,随便写两个最常用的公共方法吧,要写就得写大家都用得到的,比如我们算个加法减法吧,代码如下:

export function add(x, y) {return x + y;
}
export function sub(x, y) {return x - y;
}

 3 登录账户,准备上传

既然已经开发完成了,那就往npm库里传吧,以后大家也能用上我的公共方法了,第一步就是登录npm,执行命令:npm login

刚开始我还想着,我直接在vsCode里执行一下npm login登录一下得了,没想到他让我往浏览器跳,这上面就是登录地址,如上图,打开npm登录链接如下图所示,他提示我去邮箱拿验证码

 登录我心爱的QQ邮箱,拿到验证码,输入后,他告诉我,很成功,很安全

 然后本地的vsCode这里,貌似他也收到了信息,知道我登录成功,验证通过了,他就自动走下去了。

4 往上推代码 

代码写完了,也验证成功了,然后就是往npm库里推代码了,此刻心情好激动,执行命令:

npm publish推动效果如下图:

但需要注意,我们这个伟大的  js-tool-big-box 可是一个要让大家使用的npm公共包,公共库,所以设置一下权限,要不别人以为你这是私包呢,执行命令:npm publish --access public

但这个时候会有报错信息,如下图:

这是因为执行这个命令的时候,也是一次推项目,毕竟也是执行npm publish嘛,npm规范规定两次推代码的版本号不能相同,所以要修改一下版本号至少,不管你有没有修改业务逻辑代码。所以手动修改一下package.json中的version属性值,或者执行一下命令:npm version patch

这样version版本号就自动提升了一下了,你可以执行命令后,查看一下version的属性值,从1.0.0变成了1.0.1啦。

5 看看传上去了没

折腾这么半天,不得看看传上去了没,要是弄半天,结果没传上去,岂不是很糟糕,来打开npm网站,输入我们伟大的新项目 js-tool-big-box ,怎么验证,输入,查询呗,有就是上去了,没有就是坏了,哪里出问题了,我们验证一下看看

应该不会有哪个人,在和我们同一时间,想到了同一个名字,然后传上去吧,看一看 右下角的那个头像,Collaborators 这里,再看看代码code那里,不错,不错,就是我们的项目,稳了。

6 安装一下 

最激动人心的时刻到了,npm包也开发完了,推也推上去了,权限也设置了,我们本地项目安装一下,导入一下,使用一下不就行啦,来吧,老规矩,执行命令 npm install js-tool-big-box

然后使用一下这两个方法。太神奇了,竟然安装成功了

 7 尝鲜使用 

在业务组件内,先导入我们的npm包,使用一下里面的add和sub方法,看看效果如何,代码如下

import { add, sub } from 'js-tool-big-box';  // 导入let testAdd = add(3333, 3333);
let textSub = sub(999, 333);
console.log('testAdd::', testAdd);
console.log('textSub::', textSub);

console.log的效果如下图,你别说,你还真别说,算的还挺准


http://www.mrgr.cn/p/76835823

相关文章

java多渠道消息推送-(微信公众号、钉钉、邮箱、系统内部、短信等)

1. 消息对象定义 1.1 通用消息对象定义package com.yj.notice.message; import com.yj.commons.tools.utils.DateUtils; import com.yj.commons.tools.utils.StringUtil; import com.yj.notice.costant.NoticeMethodEnum; import lombok.AllArgsConstructor; import lombok.Bu…

【2024蓝桥B组】 R格式

R格式 题目 题目分析 1.看似是x*2n,实际上可以看为x对自身的累加,例如: x*21=x*2=2x x*22=(x+x)+(x+x)=4x x*23=((x+x)+(x+x))+((x+x)+(x+x))=8x ... 所以,我们可以自己调用一个函数:在该函数实现对s自身的累加,由于我们需要进行多次对自身的累加,所以我们采用指针void …

从 0 搭建公司Jenkins服务 Centos7

从 0 搭建公司Jenkins服务 Centos7 安装 (运维人员) 安装环境 配置DNS安装JDK17安装Jenkins安装Docker安装GIT安装Ansible启动Jenkins安装插件配置凭据配置共享库配置 (开发经理)使用 (开发、测试人员) 安装 (运维人员) 安装环境 配置DNS 新安装系统的服务器无法解析域名&a…

shell脚本中的运算符和条件判断

shell脚本中的运算符和条件判断: 一、算术运算符 在Shell脚本中,你可以使用各种运算符来执行数学运算、比较和逻辑操作。 计算方式:$[ ] $(( ))例: a=$[(9+5)90] 打印输出结果 ==> echo $a 二、条件判断 判断方式:test $a = 90 [ $a = 90 ]注意事项: 判断处理中间空格…

研究表明,全球互联网流量竟有一半来自机器人

据Cyber News消息,Thales Imperva Bad Bot近期做了一份报告,显示在2023年有49.6%的互联网流量竟来自机器人,比上一年增长 2%,达到自2013年以来观察到的最高水平。 报告称,这一趋势正对企业组织产生负面影响&#xff0c…

流程表单平台优点全介绍

针对流程表单平台的优点和特点,本文将做一个详细介绍。在数字化转型时期,借助低代码技术平台的发展优势,可以为企业提质增效、创造高质量的发展前景。流辰信息坚持自主研发创新,提供流程表单平台、低代码技术平台产品,助力企业做好数据治理工作,实现流程化管理。针对流程…

WEB3.0:互联网的下一阶段

随着互联网的发展,WEB3.0时代正在逐步到来。本文将深入探讨WEB3.0的定义、特点、技术应用以及未来展望,为读者带来全新的思考。 一、什么是WEB3.0? WEB3.0可以被理解为互联网发展的下一阶段,是当前WEB2.0的升级版。相较于2.0时代…

直方图与核密度估计

核密度估计(KDE)方法,相当于用多个波包的组合形式来近似一个真实的概率密度,以获得一个连续可微分的概率密度函数。本文通过一些简单的概率分布的示例,演示了一下KDE的使用方法。其实KDE的思想在很多领域都会以不同的形式出现,是一个比较基础的概率分布近似手段。技术背景…

ADB的基本语法及常用命令

学习网址 ADB命令的基本语法如下&#xff1a; adb [-d|-e|-s <serialNumber>] <command> 如果有多个设备/模拟器连接&#xff0c;则需要为命令指定目标设备。 参数及含义如下&#xff1a; 常用命令如下&#xff1a; 1. 启动ADB服务 adb start-server 2. 停止…

AI智能分析视频质量诊断系统解决方案建设思路与设计

一、建设背景 随着安防视频覆盖日趋完善&#xff0c;视频在安全管理等方面发挥了不可替代的作用&#xff0c;但在使用过程中仍然存在视频掉线、视频人为遮挡、视频录像存储时长不足等问题&#xff0c;存在较大的安全隐患。 1&#xff09;视频在安全生产管理上作用日趋凸显&am…

电梯会议+原型展示

视频效果展示:原型展示PPT:

Docker+Uwsgi+Nginx部署Django项目保姆式教程

之前&#xff0c;我和大家分享了在docker中使用uwsgi部署django项目的教程。这次&#xff0c;为大家带来的是使用DockerUwsgiNginx部署Django项目。废话不多说&#xff0c;我们开干。 步骤1&#xff1a;使用命令创建一个django项目 我这里python版本使用的是3.9.x 首先&#…

Go 单元测试之HTTP请求与API测试

目录一、httptest1.1 前置代码准备1.2 介绍1.3 基本用法二、gock2.1介绍2.2 安装2.3 基本使用2.4 举个例子2.4.1 前置代码2.4.2 测试用例 一、httptest 1.1 前置代码准备 假设我们的业务逻辑是搭建一个http server端,对外提供HTTP服务。用来处理用户登录请求,用户需要输入邮箱…

10_QT系统移植之在开发板上部署QT运行环境

QT系统移植之在开发板上部署QT运行环境 一.开始部署 1.我们在Ubuntu新创建一个文件夹,然后把我们用busybox做好的文件系统拷贝到这个文件下。如下图所示:2.然后我们解压这个根文件系统到当前所在的路径下。3.我们在这个解压出来的根文件系统下新创建一个opt的文件夹,如下图所…

09_QT系统移植之交叉编译QT源码和触摸源码

QT系统移植之交叉编译QT源码和触摸源码 交叉编译QT源码 一.源码下载 ​ QT官网下载: http://download.qt.io/new_archive/qt/5.7/5.7.1/ 二.编译环境 开发环境:Ubuntu16 编译器:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 三.编译触摸 触摸源码…

【Textin.com】智能文档处理系列 - 电子文档解析技术全格式解析

一、引言 在当今的数字化时代&#xff0c;电子文档已成为信息存储和交流的基石。从简单的文本文件到复杂的演示文档&#xff0c;各种格式的电子文档承载着丰富的知识与信息&#xff0c;支撑着教育、科研、商业和日常生活的各个方面。随着信息量的爆炸性增长&#xff0c;如何高效…

Midjourney常见玩法及prompt关键词技巧

今天系统给大家讲讲Midjourney的常见玩法和prompt关键词的一些注意事项&#xff0c;带大家入门&#xff5e;&#xff08;多图预警&#xff0c;建议收藏&#xff5e;&#xff09; 一、入门及常见玩法 1、注册并添加服务器&#xff08;会的童鞋可跳过&#xff5e;&#xff09; …

Linux之根分区扩容

前言Linux根分区扩容是运维中必不可少的操作,扩容之前需要清楚系统的根分区是逻辑卷还是一块磁盘,根据不同的情况进行不同的扩容操作。相关概念MBR和GPTMBR(Master Boot Record)(主引导记录)和GPT(GUID Partition Table)(GUID意为全局唯一标识符)是在磁盘上存储分区信…

Comate代码问答侧边栏区域使用体验

相信一直使用Comate的同学已经察觉到了 “侧边栏好像变得不一样了?” 没错! Comate侧边栏2.0来啦!新年新气象,侧边栏也要新! 🌈 侧边栏现在的功能? 基于文心大模型和飞桨能力,可以在侧边栏技术问答区域通过自然语言生成代码。你可以在这里问任何想问的技术问题!例如:…

【Vue + keep-alive】路由缓存

一. 需求 列表页&#xff0c;n 条数据项可打开 n 个标签页&#xff0c;同时1条数据项的查看和编辑共用一个标签页。如下所示&#xff1a; 参考 // 主页面 // 解决因 路由缓存&#xff0c;导致 编辑后跳转到该页面 不能实时更新数据 onActivated(() > {getList() })二. 实现…