在npm上传属于自己的包

news2025/5/11 0:08:56

前言

 最近在整理代码,上传到npm方便使用,所以学习了如何在npm发布一个包,整理写成一篇文章和大家一起交流。

修改记录

更新内容更新时间
文章第一版25.2.10
新增“使用包”,“删除包的测试”25.2.12

 


1、注册npm账号

npm | Home

2、确保是登录状态

(在包目录下,终端执行 npm login)

 按enter键自动打开页面,进行登录验证。

(上传包之前确保使用的是官方的镜像源)

  这里使用 nrm工具(一个用于快速切换 NPM 镜像源的工具。)

npm i nrm -g

 常用指令

  • nrm ls

//查看镜像源

  • nrm use xx

// 使用镜像源

//如 nrm use npm ​

  • nrm test xx

//测试镜像源响应时间

//测试单一镜像源 比如 nrm test taobao

  • nrm test

//测试全部镜像源

(下面两个用得比较少)

  • nrm add 镜像名称 镜像地址

//添加自定义镜像源

// 比如 nrm add myregistry https://my.custom.registry.com

  • nrm del myregistry

//删除镜像源

3、从0-1上传一个包

3.1、初始化项目

3.2、包书写位置

(一般写在index.js文件,看package.json中的main)

书写并暴露,比如

function add(a,b){
    return a+b
}
​
module.exports={
    add
}

3.3、上传包

 --1、准备工作

重要事情说三遍

确保现在用的是官方的镜像源!!!

确保现在用的是官方的镜像源!!!

确保现在用的是官方的镜像源!!!

nrm ls

比如现在用的是淘宝的镜像源,那么就要切换成官方的镜像源

npm use npm

 切换并查看

 --2、正式上传

npm publish

 (确保是npm是登录成功状态+使用的是官方的镜像源)

 上传成功!

4、使用包(2.12-直接看4.3)

按步骤从0-1上传一个包,接下来进行一个测试。

为了方便演示,我新上传了一个包。

4.1、新包相关代码:

// index.js
function add(a, b) {
    return a + b;
}

function sub (a, b) {
    return a - b;
}
module.exports = {
    add,
    sub
};

4.2、上传记录:

4.3、正式使用:

# 创建一个新的测试项目
mkdir test-project
cd test-project
npm init -y
# 安装刚刚发布的包
npm install dd_math

 

 在项目目录下新建index.js

const myPackage = require('dd_math');
const result = myPackage.add(5,6);
console.log(result); 
const subRes=myPackage.sub(10,5);
console.log(subRes);

 运行测试:node index.js

5、更新包

(确保代码可用。需要在package.json中修改版本号)

npm publish

5.1、新增/修改代码 

 

5.2、修改版本号

(package.json中的版本号从1.0.0变成1.0.1)

5.3、更新

npm publish

 在npm上查看修改结果。

6、删除包

6.1、核心语句

​ npm unpublish xx --force

//xx 即是包的名字

6.2、删除的条件

需满足一定的条件

官网文档 https://docs.npmjs.com/policies/unpublish 

以下是整理得出,仅供参考。

1. 时间限制

  • npm 仅允许在包发布后的 72 小时内删除包。这是为了防止包的突然消失给依赖该包的开发者带来不便和潜在的问题。例如,很多项目可能在短时间内就依赖并使用了新发布的包,如果随意删除,可能会导致这些项目无法正常运行。

2. 下载量限制

  • 如果包在过去的 24 小时内有下载记录,那么该包不能被删除。这同样是为了保护依赖该包的用户,避免他们因为包的删除而受到影响。

3. 范围包限制

  • 对于范围包(Scoped packages),在被下载后就无法删除,只能取消发布(unpublish)。范围包是指名称以 @scope/ 开头的包,比如 @example/package

6.3、测试删除

我目前上传的包

尝试将kainama_math包进行删除。

删除之前确保:已经登录npm、现在使用的是官方镜像源!

删除之前确保:已经登录npm、现在使用的是官方镜像源!

删除之前确保:已经登录npm、现在使用的是官方镜像源!

在上传包的项目目录下执行语句

​ npm unpublish kainama_math --force

登录npm进行查看结果,成功删除kainam_math包!

 

7、小结 

在后续上传包的时候,我们尽可能上传有意义的代码,遵守相关的代码上传和社区规则。

如果你喜欢这篇文章,请留下你的点赞、收藏吧~

期待你的关注,一起交流学习~ 

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

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

相关文章

[Spring] Spring常见面试题

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

22.4、Web应用漏洞分析与防护

目录 Web应用安全概述DWASP Top 10Web应用漏洞防护 - 跨站脚本攻击XSSWeb应用漏洞防护 - SQL注入Web应用漏洞防护 - 文件上传漏洞Web应用漏洞防护 - 跨站脚本攻击XSS Web应用安全概述 技术安全漏洞,主要是因为技术处理不当而产生的安全隐患,比如SQL注入…

SpringBoot实战:高效获取视频资源

文章目录 前言技术实现SpringBoot项目构建产品选取配置数据采集 号外号外 前言 在短视频行业高速发展的背景下,海量内容数据日益增长,每天都有新的视频、评论、点赞、分享等数据涌现。如何高效、精准地获取并处理这些庞大的数据,已成为各大平…

迅为RK3568开发板篇OpenHarmony实操HDF驱动配置LED-LED测试

将编译好的镜像全部进行烧写,镜像在源码根目录 out/rk3568/packages/phone/images/目录下。 烧写完成之后,在调试串口查看打印日志,如下图所示: 然后打开 hdc 工具,运行测试程序,输入“led_test 1”&…

OpenGL ES -> 投影变换矩阵完美解决绘制GLSurfaceView绘制图形拉伸问题

GLSurfaceView绘制图形拉伸问题 假如在XML文件中声明GLSurfaceView的宽高为 android:layout_width"match_parent"android:layout_height"match_parent GLSurfaceView绘制的图形在Open GL ES坐标系中,而Open GL ES坐标系会根据GLSurfaceView的宽高将…

玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——三分钟教你用langchain提示词工程获得猫娘女友 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型—…

图书管理项目(spring boot + Vue)

想要该项目的话,就 jia 我,并在评论区给我说一下,只需要1元,我把整个项目发给你 jia微:18439421203(名字叫:Bingo) 运行图片:

【机器学习】简单线性回归算法及代码实现

线性回归算法 一、摘要二、线性回归算法概述三、损失函数的定义和衡量标准四、简单线性回归的求解和应用五、机器学习算法一般求解思路 一、摘要 本文讲解了线性回归算法的基础知识和应用,强调线性回归主要用于解决回归问题。通过分析房产价格与房屋面积的关系&…

AI-大模型(3)-MoE模型

1.什么是MOE模型 多个领域专家共同工作,并行计算。 2.MOE如何工作 gate层:根据输入Token选择专家 基于Token来选择专家 Gate层选择专家 除专家外,其他层共享一个token可以选择多个专家 一个token 可以选择一个专家或者多个专…

PySide(PyQT)使用场景(QGraphicsScene)进行动态标注的一个demo

用以标注图像的一个基本框架demo import sys from PySide6.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QMainWindow, QLabel, QGraphicsPixmapItem from PySide6.QtGui import QPixmap, QPainter, QTransform from PySide6.QtCore import Qt, QPointF, S…

w206基于Spring Boot的农商对接系统的设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…

C++类和对象进阶:拷贝构造函数深度详解

拷贝构造函数 拷贝构造函数前言引入拷贝构造函数特征拷贝构造函数建议参数加上const 拷贝构造函数参数传值会引发无穷递归的解释内置类型传参拷贝自定义类型传参拷贝详细解释 编译器生成的默认拷贝构造函数默认构造函数做了什么?深拷贝与浅拷贝简单实现一个深拷贝。…

像取快递一样取文件?

看到一个很有意思的项目,像我们做软件分享的感觉会有用,就是现在服务器费用太贵了,如果自建的话感觉不是很值得。 FileCodeBox FileCodeBox 是一个轻量级的文件分享系统,它基于匿名口令分享文本和文件,无需注册登录&…

DeepSeek 助力 Vue 开发:打造丝滑的返回顶部按钮(Back to Top)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

【前端开发学习笔记15】Vue_8

手动添加Pinia到Vue项目: 在实际开发中,Pinia配置可在项目创建时自动添加。初次学习从零开始: 1. 用Vite创建空的Vue3项目,命令为npm create vuelatest。 2. 按官方文档将pinia安装到项目中。 import { createApp } from vue im…

通过docker启用rabbitmq插件

创建文件,docker-compose.yml services:rabbitmq:image: rabbitmq:4.0-managementports:- "5672:5672"- "15672:15672"volumes:- ./data/rabbitmq/data:/var/lib/rabbitmq # 持久化数据- ./data/rabbitmq/plugins/rabbitmq_delayed_message_ex…

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 与基于 openEuler 构建 LVS-DR 群集

一、 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 NAT 模式 部署简单:NAT 模式下,所有的服务器节点只需要连接到同一个局域网内,通过负载均衡器进行网络地址转换,就可以实现负载均衡功能。不需要对…

C++17 中 std::lcm:从入门到精通

文章目录 一、引言二、std::lcm 的基本概念三、入门示例四、计算多个整数的最小公倍数五、std::lcm 的实现原理六、在实际项目中的应用七、注意事项八、总结 一、引言 在 C 编程中,处理数学运算时,计算最小公倍数(Least Common Multiple&…

html 点击弹出视频弹窗

一、效果: 点击视频按钮后,弹出弹窗 播放视频 二、代码 <div class="index_change_video" data-video-src="</

代码随想录算法【Day44】

Day44 1143.最长公共子序列 class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size() 1, vector<int>(text2.size() 1, 0));for (int i 1; i < text1.size(); i) {for (int j 1; …