如何上传自己的npm包

文章目录

  • 一、创建项目
    • 1.1 第一步注册
    • 1.2 第二步初始化
    • 1.3 第三步登录
    • 1.4 更改镜像
    • 1.5 上传
    • 1.6 更新上传后的npm包
  • 二、编写代码
    • 2.1 新建一个文件夹
    • 2.2 初始化
    • 2.3 package.json配置
    • 2.4 安装依赖模块
    • 2.5 创建index.js文件
    • 2.6 测试
    • 2.7 上传


npm是什么?
npm是JavaScript软件包管理器,它允许开发人员在项目中方便地安装、发布和共享代码库。可以将其视为一个类似于应用商店的工具,可以帮助开发人员快速地找到、安装和更新他们需要的代码库。

一、创建项目

1.1 第一步注册

去npm的官方网站注册一个账号点击打开链接

1.2 第二步初始化

首先,你需要创建一个新的项目目录。使用以下命令初始化 npm 项目:

npm init

初始化一个package.json文件

注意:必须要有这个文件才能上传,npm可以上传任何一个包含package.json的包,package.json的main(入口)设置为index.js(名字自取)然后在本目录下建一个index.js文件,name表示你这个包的名字只能小写,version代表版本,每次更新都要修改这里的版本再npm publish

package.json可以在这里了解一下点击打开链接

1.3 第三步登录

在本地使用命令行连接npm 使用下面的命令 然后按照提示走,密码默认是不会显示出来的

npm login 或者 npm adduser

1.4 更改镜像

因为大部分的人npm使用的是淘宝镜像,上传会失败,所以需要替换为原来的镜像
https://registry.npmjs.org/

npm config set registry https://registry.npmjs.org/

再查看是否设置成功

npm config get registry

更改了镜像需要按照前面说过的步骤,重新在本地登陆你的npm账户

1.5 上传

上传

npm publish

撤销上传(如果想删除已经上传了的包,可以在package.json所在目录使用以下命令)

npm unpublish --force

1.6 更新上传后的npm包

  1. 手动去package.json里面修改版本号,修改后的版本号必须比之前的大,然后使用npm publish上传
  2. 使用npm 命令行工具更新版本号,再使用npm publish 上传

注意事项:

你必须使用exports暴露你的方法,如下定义了一个npmTest的方法然后暴露出来,才能在安装这个包之后使用require引入

exports.npmTest = (name) => {console.log(name)
}

另外平时我们在github上看到的readme.md的样式是用过MarkDow语法来实现的,这个语法实现起来很简单,MarkFown的yu语法在这里了解点击打开链接

二、编写代码

2.1 新建一个文件夹

首先,在本地新建一个文件夹,命名为"desensitization",并进入该文件夹。

mkdir desensitization
cd desensitization

2.2 初始化

使用npm初始化这个文件夹,并生成package.json文件。

npm init

2.3 package.json配置

在package.json文件中添加"name"、“version”、“description”、"main"等信息。

{"name": "desensitization","version": "1.0.0","description": "A JavaScript module for masking names","main": "index.js","dependencies": {}
}

2.4 安装依赖模块

安装依赖模块"lodash"和"string-mask"。

npm install lodash string-mask --save

2.5 创建index.js文件

const _ = require('lodash');
const StringMask = require('string-mask');function maskName(name) {const firstName = _.capitalize(name.split(' ')[0]);const otherName = name.split(' ').slice(1).map(n => n[0].toUpperCase() + '.');const maskedName = [firstName, ...otherName].join(' ');return new StringMask('XXX XX').apply(maskedName);
}module.exports = maskName;

2.6 测试

在根目录下创建一个名为"test.js"的文件,并添加以下代码

const maskName = require('./index');const name = 'John Smith';
const maskedName = maskName(name);console.log(maskedName); // "XXX Xx"

2.7 上传

执行命令"npm publish",将模块上传至npm上。

npm publish

上传成功后,其他用户就可以使用npm install desensitization命令安装你编写的脱敏模块并使用了。

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

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

相关文章

提取当前文件夹下多文件夹中的数据

提取当前文件夹下多文件夹中的数据 1.实现步骤 现在D:\临时\图库 这个文件夹下有多个文件夹,现在需要将多个文件夹中的文件全部移动到D:\临时\图库下; $sourcePath "D:\临时\图库" $targetPath "D:\临时\图库"Get-ChildItem -Path $sourcePath -File …

【Proteus仿真】【Arduino单片机】数码管显示

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用TM1637、共阳数码管等。 主要功能: 系统运行后,数码管显示数字、字符。 二、软件设计 /* 作者:嗨小易&am…

安卓常见设计模式------装饰器模式(Kotlin版)

1. W1 是什么,什么是装饰器模式? 思想:动态地给对象添加额外的功能,通过将对象包装在一个装饰器类中,使装饰器类在不改变原始对象结构的情况下,扩展其功能。 2. W2 为什么,为什么需要使用装饰…

Spring Cloud Config、Apollo、Nacos和Archaius对比

一、适应场景 Spring Cloud Config、Apollo、Nacos、Archaius这四个配置中心在功能和使用场景上有所差异。 1.Spring Cloud Config Spring Cloud Config是Spring Cloud官方提供的分布式系统的外部配置中心。它提供了服务器和客户端支持,可以集中管理不同环境、不同集…

平面和射线交点

设平面 A x B y C z D 0 ( A 2 B 2 C 2 ≠ 0 ) AxByCz D0\left(A^2B^2C^2\neq 0\right) AxByCzD0(A2B2C20), 点 P ( P x , P y , P z ) P(P_x, P_y, P_z) P(Px​,Py​,Pz​) (1)求点 P P P到平面距离 (2)过点 P P P作直线,方向为 ( D x , D y , D z ) \lef…

AI时代如何提升自己晋升力

要在AI时代提升职场晋升力,采取以下详细策略: 终身学习的实践: 专业课程: 定期参加在线课程或研讨会,如Coursera、edX等,学习最新的AI技术和行业动态。行业资讯: 订阅相关的行业杂志、博客&…

基于SSM的学院就业信息网设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

奇异矩阵、非奇异矩阵

对于一个方阵A: 如果A的行列式等于0,称矩阵A为奇异矩阵如果A的行列式不等于0,称A 非奇异矩阵 也就是说,对于方阵A,如果它是满秩的,即它的秩等于矩阵的阶数,就是非奇异矩阵;如果秩小…

​怎么测试websocket接口

在部分业务中,我们需要使用长连接,我们可以使用http长连接或者websocket,开发结束后难免会遇到测试问题,这里推荐2个,一个是postman,一个是网站 postman 测试网站 测这边推荐测试网站,支持ws/w…

【123. 买卖股票的最佳时机 III】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:const int Init-0x3f3f3f3f;int maxProfit(vector<int>& prices) {int nprices.size();vector<vector<int>> f(n,vector<int>(3,Ini…

electron 主进程 和 渲染进程通信 ipcRenderer 和 mainWindow.webContents

electron 开发时最麻烦就是electron版本和node版本的选择和正确安装 electron 用npm安装时太慢容易报错&#xff0c;建议用cnpm i 进行安装 注意最新版渲染进程使用node nodeIntegration: true, // 渲染进程可用node contextIsolation: false, // 这个值影响nodeIntegration是…

送水服务预约小程序内容该如何做

无论小区还是办公楼等场景&#xff0c;送水服务往往有较高需求&#xff0c;同时该服务属于长期稳定性的&#xff0c;因此对品牌来说&#xff0c;如何打造品牌获取更多用户及转化非常重要&#xff0c;然而在实际订水过程中&#xff0c;又会面临着一些难题&#xff1a; 1、品牌传…

机器视觉opencv答题卡识别系统 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 答题卡识别系统 - opencv python 图像识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分…

基于ssm的校园办公室报修管理系统

基于ssm的校园办公室报修管理系统 摘要 基于SSM的校园办公室报修管理系统是一个现代化的、高效的报修平台&#xff0c;它能够帮助校园内的教职工和学生更方便、更快捷地提交和处理报修请求。该系统基于Spring、SpringMVC和MyBatis&#xff08;简称SSM&#xff09;开发&#xff…

Yii2 引入 外部无命名空间的类,Class not found

记一次问题解决 问题描述 支付宝开放平台SDK v2 无命名空间。需 require 引入。 require Yii::$app->vendorPath."/alipay-sdk-php/v2/aop/AopClient.php"; var_dump(new AopClient([]));exit();上述写法会直接报错。 Class temporary\controllers\AopClient …

竞赛 身份证识别系统 - 图像识别 深度学习

文章目录 0 前言1 实现方法1.1 原理1.1.1 字符定位1.1.2 字符识别1.1.3 深度学习算法介绍1.1.4 模型选择 2 算法流程3 部分关键代码 4 效果展示5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计 图像识别 深度学习 身份证识别…

视频剪辑高手的秘诀:如何从视频中提取封面,提高视频点击率

在视频分享平台上&#xff0c;一个吸引人的封面往往能吸引更多的观众点击。一个好的封面可以传达视频的主题&#xff0c;吸引人们的兴趣&#xff0c;提高视频的点击率。那么&#xff0c;如何从视频中提取封面呢&#xff1f;下面&#xff0c;让我们一起来看看云炫AI智剪如何操作…

使用 Redis 实现生成分布式全局唯一ID(使用SpringBoot环境实现)

目录 一、前言二、如何通过Redis设计一个分布式全局唯一ID生成工具2.1、使用 Redis 计数器实现2.2、使用 Redis Hash结构实现 三、通过代码实现分布式全局唯一ID工具3.1、编写获取工具3.2、测试获取工具 四、总结 一、前言 在很多项目中生成类似订单编号、用户编号等有唯一性数…

C# 时区时间与本地时间的相互转换

//时区时间与本地时间的相互转换&#xff0c;方法一&#xff1a; var localTime TimeZone.CurrentTimeZone.ToLocalTime(DateTime.UtcNow); var utcTime TimeZone.CurrentTimeZone.ToUniversalTime(DateTime.Now); //时区时间与本地时间的相互转换&#xff0c;方法二&#…

打印流详解

概述 作用&#xff1a;打印流可以实现方便、高效的打印数据到文件中去。 高效体现在用到了缓冲流&#xff1a; public PrintStream(OutputStream out, boolean autoFlush, Charset charset) {super(out);this.autoFlush autoFlush;this.charOut new OutputStreamWriter(thi…