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

如何发布自己的npm包

一、什么是npm

npm是随同nodejs一起安装的javascript包管理工具,能解决nodejs代码部署上的很多问题,常见的使用场景有以下几种:

①.允许用户从npm服务器下载别人编写的第三方包到本地使用。
②.允许用户从npm服务器下载并安装别人编写的命令行程序到本地使用。
③.允许用户将自己编写的包或命令行程序上传到npm服务器供别人使用。

二、注册npm

1.首先,在npm官网注册账号  官网地址: https://www.npmjs.com

如果之前用的淘宝镜像,需要切换npm源,否则可能报403错误,输入命令:

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

三、登录npm

 npm login    (备注: login 是 adduser 的别名,npm adduser 其行为方式完全相同)

查看登录信息 npm whoami  即可显示当前登录账户 (这一步不是必须)

四、项目初始化

执行 npm init -y  其中"-y" 表示所有选择都选 yes  ,也可执行 npm init  每项逐个配置

// 配置说明
{
    package name: // (默认项目名字) 也可以写其他名字
    version: (1.0.0) // 默认是1.0.0 , 根据具体版本变更版本号
    description: // 项目描述,默认为空
    entry point: hello.js // 入口默认文件是index.js
    test command: // 测试代码
    git repository: // 是否托管在git远程服务上
    keywords: // 关键词,用于在npm网站进行搜索
    author: // 作者
    license: (ISC) // 许可证信息,可以选择适当的许可证进行开源 (默认"ISC")
}

不能发布npm仓库中已经存在的包。例如:dayjs (已经有大佬发布过了)

注意:生成的package.json 中的name名称最好和项目名称保值一致,版本号version也不能重复,每次更新版本需要变更版本号。否则会报错,npm 包名需在npm仓库中唯一,如果包名被占用需要更换包名才能发布成功。

五、发布包

在这个过程中,NPM会将目录打包为一个存档文件,然后上传到官方源仓库中。

登录npm账号,点击packages选项,即可看到已发布的包列表

六、 更新包

项目每次发布都需要更新版本号,否则也会报错

npm包修改后,手动把package.json里的version版本号修改了,或者使用以下命令自动更新版本号,再执行npm publish . 命令

升级补丁版本号(修改bug):npm version patch  // 1.0.x

升级次版本号(新增功能):npm version minor  // 1.x.0

升级主版本号(较大改版):npm version major  // x.0.0

然后在使用的项目中,重新安装包即可更新到最新版本。

七、 下架包

有两种方式可以下架已发布的npm 包

①. npm unpublish --force

②.点击npm包 --> settings ,底部会出现删除包选项,如下图:

 以上2种方式都可删除已发布的npm包。

以上就是发布npm包的流程,希望大家都能为开源社区贡献自己的一份力量!!!


http://www.kler.cn/a/436.html

相关文章:

  • VMware虚拟机中CentOS系统/dev/mapper/centos-home分区扩容指南
  • GPUStack v0.4.1 单节点与多节点安装与部署指南 Docker PowerShell
  • React Native 集成原生Android功能
  • C语言-结构体内存大小
  • 直流电源如何输出恒压源和恒流源
  • 操作系统导论读书笔记
  • 基于MFC的JavaScript进行网页数据交互
  • 2023-03-15:屏幕录制并且显示视频,不要用命令。代码用go语言编写。
  • 计算机网络面试总结
  • 【C++】STL简介 及 string的使用
  • 爽,我终于掌握了selenium图片滑块验证码
  • 程序是怎样跑起来的(2)
  • JS中sort()方法返回值?
  • 高等数学——二重积分
  • 【JDK动态代理】及【CGLib动态代理】:Java的两种动态代理方式
  • 全网独家首发|极致版YOLOv7改进大提升(推荐)网络配置文件仅24层!更清晰更方便更快的改进YOLOv7网络模型
  • Linux中sudo,su与su -命令的区别
  • Qt之高仿QQ系统设置界面
  • springboot vue3 前端调用后端接口 传参问题
  • 每天学一点之Lambda表达式
  • 算法刷题总结 (四) 动态规划
  • 计算机组成原理(2.1)--系统总线
  • 关于ES6新特性的总结
  • Python基础—面向对象(超详版)
  • 理清gcc、g++、libc、glibc、libstdc++的关系
  • 乐吾乐2d可视化之智慧城市可视化(二)