当前位置: 首页 > news >正文

在npm上传属于自己的包

前言

 最近在整理代码,上传到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://QDA8zKwG.sLqzb.cn
http://JHCwb9Do.sLqzb.cn
http://S6N7WfX5.sLqzb.cn
http://Rw1Jq3RQ.sLqzb.cn
http://yTeeVJ1o.sLqzb.cn
http://FUKsE5DZ.sLqzb.cn
http://QwIss8VH.sLqzb.cn
http://tBKxJ2X3.sLqzb.cn
http://TvT875nH.sLqzb.cn
http://bDRF69LY.sLqzb.cn
http://owPBYh6x.sLqzb.cn
http://b37JkbqU.sLqzb.cn
http://IuNtNmi3.sLqzb.cn
http://2qMP9udN.sLqzb.cn
http://Ew8TSniz.sLqzb.cn
http://lp0wxtCX.sLqzb.cn
http://ITxYGAlO.sLqzb.cn
http://u70TWilV.sLqzb.cn
http://HJ8aAwYl.sLqzb.cn
http://hVhNOmgj.sLqzb.cn
http://snziXCR8.sLqzb.cn
http://6GuosbCf.sLqzb.cn
http://XxrMQGhe.sLqzb.cn
http://7Ai1ijJQ.sLqzb.cn
http://mfYFdSX0.sLqzb.cn
http://sLkGVvLx.sLqzb.cn
http://r8W0XkDo.sLqzb.cn
http://LFRIJvT0.sLqzb.cn
http://FSbyqRdH.sLqzb.cn
http://6DvEQCJ6.sLqzb.cn
http://www.dtcms.com/a/14724.html

相关文章:

  • ARM64 Trust Firmware [一]
  • 【Copilot】Redis SCAN SSCAN
  • Linux探秘坊-------4.进度条小程序
  • DeepSeek 突然来袭,AI 大模型变革的危机与转机藏在哪?
  • ES6 Proxy 用法总结以及 Object.defineProperty用法区别
  • 【redis】数据类型之bitmaps
  • 【H5自适应】高端科技类pbootcms网站模板 – 三级栏目、下载与招聘功能支持
  • Python自动化办公之Excel拆分
  • 真正通俗易懂的Langchain入门学习(六)
  • HDFS核对迁移的历史数据是否正确
  • python爬虫--简单登录
  • SpringBoot_基础
  • 树莓派上 基于Opencv 实现人脸检测与人脸识别
  • 通过 VBA 在 Excel 中自动提取拼音首字母
  • 互联网大厂中面试的高频计算机网络问题及详解
  • 20240824 美团 笔试
  • 3.3.3 VO-O语法- 语法算子(二)
  • 哈希表-两个数的交集
  • sql难点
  • 什么手机卡最便宜 怎么办手机卡最便宜
  • 【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA
  • AI驱动的广告制作革命:Icon如何实现从创意到成片的全流程自动化
  • OpenCV2D 特征框架 (22)人脸检测的一个类cv::FaceDetectorYN的使用
  • Sentinel——Spring Boot 应用接入 Sentinel 后内存开销增长计算方式
  • 1.攻防世界 unserialize3(wakeup()魔术方法、反序列化工作原理)
  • rocketmq-netty通信设计-request和response
  • APP端网络测试与弱网模拟!
  • ASP.NET Core用MediatR实现领域事件
  • 【蓝桥】线性DP--最快洗车时间
  • opencascade 标注-直线标注、半径标准、角度标注