图文结合简单易学的 npm 包的发布流程

大家好,我是若川。我持续组织了近一年的源码共读活动,感兴趣的可以 点此扫码加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外:目前建有江西|湖南|湖北籍前端群,可加我微信进群。

本文是源码共读群小伙伴 @NewName 的投稿。
原文:https://juejin.cn/post/7125709933709885448
他基本是我出一期就写一期笔记。跟下来近40期,学会看源码之后,还自己学各种源码。

聪明的你做了几个项目之后,有没有发现发现某些工具方法或者组件的使用频率很高,好多项目都在用。如何做到这些工具方法或者组件的更优雅地复用而不是用到了就复制粘贴呢?封装为一个npm包是一个不错的选择。本文以图文结合的方式介绍了如何从0到1发布一个npm包,文中的一些关键点的说明将帮你避坑提效。欢迎阅读学习~

Part11.代码准备

每个人要发布的npm包类型都不尽相同,有UI组件库,有工具函数库,还有使用的插件等。笔者要发布的npm包是在项目中常用的工具函数组成的工具函数库,构建工具使用的是rollup,代码托管在github上。下面简述一下一些关键点:

  • 首先在github上新建仓库,新建仓库时License 选择MIT, 此步骤不选择也无妨,后续添加license也可以。但是一定要有License才能发布npm包。

c9641b0caf2307533541793d9a0523a3.png
image.png
  • 拉取代码到本地

  • 初始化项目,安装依赖等

536845b94096a08fa561df3cd058144f.png
image.png
  • 完善功能

  • 打包,并在package.json中指明入口

29de231e8045e106e5e5d7907b6edb6c.png111d10fbcba41c6523df4bf01eec77d4.png另外如果发布公有包需要在package.json中增加publishConfig的配置

"publishConfig": {"access": "public"
},

更多关于项目的搭建以及一些配置方面的内容建议阅读文末的参考资料。

Part22.账号注册

先看下图了解注册的流程:e08167427aff8e6818a177fa65429b05.jpeg网址:https://www.npmjs.com/signup输入网址后会进行安全性检查,之后界面如下:dea98d757cfb418efadcf4074aa65404.png点击"我是人类" 会进行图片验证,如下图:883fd6d453962fac19c997a09f659e6f.png图片验证完就是输入用户名、密码、邮箱过程, 最后让输入one-time-password,这个一次性密码(相当于验证码)会发到你预留的邮箱里面。填写之后应该会注册成功的。

Part33.npm包发布

13.1 登录npm账号

3.1.1 登录失败

执行npm login 命令登录npm :37a718a07c7763d4a84910ad9f77f700.png如上图所示,登录失败了。解决办法:使用nrm切换镜像,将镜像改为npm。下面简要介绍一下nrm。

3.1.2 nrm  介绍

nrm 用于管理镜像,是一个可以切换npm镜像的管理工具。如下是安装和查看是否安装成功的命令:

npm i -g nrm
nrm -V

77c23327111f29fa9b0f4948473be734.png常用nrm命令如下:7de6f5ca976aa9d3d8fb26e8337d4d9e.jpeg想了解更多关于nrm的内容请查看文档和资料。下图是使用nrm ls命令查看镜像:feaadc31a8d752beceac3b52b19e4c5e.png下图是将镜像切换为npm23157026f7b3851890cba91af8e51f87.png

3.1.3 成功登录

切换镜像之后再登录:2133266120572b46254c69d08f74148c.png如上图登录时需要输入OTP,要查看邮箱。输入OTP回车之后就可以成功登录了

23.2 如何发布npm包

3.2.1 首次发布成功

登录成功之后即可执行发布命令:npm publish,如下图:dcdc6f5498b230bb0cffb8fd67508ecf.png此时npm包发布成功了。

3.2.2 名字相似发布失败

但是感觉名字'mxdevutil'可读性不咋好啊,所以改了一下名字,新名字为'mx-dev-util'重新发布,但却报错,如下图所示:0ba17f79575bba433b71405da0dbdb4b.png上图报错信息告诉我们:新包的名字和已有的包名字很相似,所以没有发布成功。解决的方法之一是可以起区分度较大的名字,但删掉重新发布更好。

33.3 如何删除npm 包

3.3.1 废弃npm 包

查资料所如下命令可以删掉发布错误的npm包:21271694902b2b9392bcfde7a42576e9.png但实际上此命令是表示废弃已发布的npm包,并不是删除。在npm网站上仍然能够查到已废弃的npm包,如下图所示:f4857809a3b33360534ac688ee6047ce.png废弃之后是否可以发布成功呢?重新执行npm publishc44b9ab486051a3f2127074ada750ac6.png执行结果如下图:5dbb34cb63b92c9a05cd8ce0caebf4e4.png还是报错,所以单单废弃原有包还是不能发布新包的。

3.3.2 删除npm包

正确的解决办法是:npm unpublish <报名> -force ,命令执行效果:689fa5997e0947883d3ce2b5bec68fb8.png再在npm网站上查找则查不到了:8f016d791785f2bac8f783ab8140fb6f.png删掉已发布的包之后,终于可以重新发布了:6878f7e7294f5e07291f869dd51b3aaa.png发布成功!在npm网站上也能够看到新包了:e540eb91dbb5bccd5a5d3dbdd956b799.png

43.4 如何使用npm包

首先安装我们发布的npm包,执行命令 npm i mx-dev-util, 如下图:e051fb10046a48709bac54c6a8fe1c8b.png可以查看package.json文件,发现已经将mx-dev-util加添为dependiences:578ea3687c9ab7d74797afdee63352f2.png接着就是在项目中使用npm包提供的方法了:ef59dfe5ff123f4f94735578d1fb1a51.png

53.5 更新npm包版本

更新npm包两步走:

  • 第一步:执行npm version  <版本号类型>

  • 第二步:执行 npm publish

3.5.1 npm version介绍

npm version命令使用方式如下:

npm version  major | minor | patch | premajor | preminor | prepatch | prerelease

这里简单介绍一下major | minor | patch 的区别:在package.json中有一个version字段,结构为 "x.y.z" ,也就是三位的版本号。分别对应 version里面的major、minor,patch。如果当前版本为  0.0.1  则发布major、minor,patch版本之后会变为 1.0.0 ,0.1.0, 0.0.2。导图总结如下:8146eec5ed8bf4168666cd933136e750.jpeg了解更多可查看npm version文档和相关资料。了解了npm version命令之后,执行npm version major :81343476ae973f0d1bde0d1ae9dc49ca.png执行命令失败,提示需要先提交代码,下图为提交代码过程:fd6168e0c30cef8edbc71c4de10e59e7.png提交代码后,再执行版本更新命令:00be814fe92971f6ba3c933c0e0fee27.png

3.5.2 改版后发布

提示版本已经更新为2.0.0版本,然后执行 npm publish 命令:51205466e664eabd33071176a3c558c3.png可以看到版本更新成功。下面总结一下用到发布npm包用到的npm命令2f0956cfdf897a2c1a8633f0477f2a81.jpeg

Part44.总结

(1)本文介绍发布一个npm包的三个关键环节:

  • 发布内容。也就是代码,这是npm包的基础

  • 注册npm账号。这是能够成功执行npm 发布命令的前提

  • npm包发布。掌握npm 包发布的这些命令是关键

(2)本文介绍了如何使用 nrm 切换 npm 的镜像 希望看完本文对您有帮助,表达不清楚或者写错的地方欢迎不吝指正~ 

参考资料:[1] npm包发布详细教程

[2] 如何发布自己的npm包(超详细步骤,博主都在用)

[3] 如何发布一个npm包


c7c6660a3ca4a8ccdd1f187dee579064.gif

················· 若川简介 ·················

你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》20余篇,在知乎、掘金收获超百万阅读。
从2014年起,每年都会写一篇年度总结,已经坚持写了8年,点击查看年度总结。
同时,最近组织了源码共读活动,帮助4000+前端人学会看源码。公众号愿景:帮助5年内前端人走向前列。

63ed232884cdf28dfc8563e6d4eb1b6f.jpeg

扫码加我微信 lxchuan12、拉你进源码共读

今日话题

目前建有江西|湖南|湖北 籍 前端群,想进群的可以加我微信 lxchuan12 进群。分享、收藏、点赞、在看我的文章就是对我最大的支持~

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

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

相关文章

拟态防御_拟态从未消失。 这就是为什么。

拟态防御Looking back on design languages, what Apple’s WWDC 2020 Keynote means for the future of design languages, and how we move on from here.回顾设计语言&#xff0c;Apple的WWDC 2020主题演讲对设计语言的未来意味着什么&#xff0c;以及我们如何从这里继续前进…

经常开发后台管理系统,如何提升自己?推荐~【留言送书】

大家好&#xff0c;我是若川。之前送过N次书&#xff0c;可以点此查看回馈粉丝&#xff0c;现在又和博文视点合作再次争取了几本书&#xff0c;具体送书规则看文末。Vue.js是一套用于构建用户界面的渐进式框架。与其他大型框架不同的是&#xff0c;它可以自底向上逐层应用。Vue…

lottie 动画_使用After Effects和Lottie制作网络动画而不会损失质量

lottie 动画A quick getting started guide快速入门指南 I recently took on a project where the team wanted to add some animated icons and a logo. Besides UX & UI design I am also a motion graphic designer so I took on the challenge of doing it with after…

最优秀的技术能力,是技术领导力!

最近和几个刚晋升为技术经理的朋友们约饭&#xff0c;席间互相吐槽职场中的喜怒哀乐&#xff1a; “开始带团队&#xff0c;既担心自己长时间不写代码技术功底退化&#xff0c;又怕手下人干不好&#xff0c;该怎么办&#xff1f;”“我都想回去敲代码了&#xff0c;拼命熬到管理…

模式匹配 怎么匹配减号_如何使您的应用导航与用户的思维模式匹配

模式匹配 怎么匹配减号One of the most interesting things about complex apps is that the navigation itself can be designed to support users’ mental model of the entire experience, thereby increasing engagement and decreasing potential user frustration.复杂应…

ux的重要性_颜色在UX中的重要性

ux的重要性When coming up with a new digital solution (desktop, mobile, app, whatever it may be) or any design concept, choosing the right colour palette is a crucial step that affects its success and outcome. The content, animations, copy and features may …

都2022 年了,你总不能还只会 npm i 吧?

大家好&#xff0c;我是若川。我持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此扫码加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

matlab学习:图像频域分析之Gabor滤波

很多同学需要源文档&#xff0c;所以添加了下载链接&#xff0c;方便大家共同学习进步~ 本文下载链接&#xff1a;http://files.cnblogs.com/yingying0907/Gabor%E7%AC%94%E8%AE%B0.zip Gabor变换是D.Gabor 1946年提出的。为了由信号的Fourier变换提取局部信息&#xff0c;引入…

云谦:前端框架的趋势与实践

大家好&#xff0c;我是若川。我持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此扫码加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

element-ui表单_每日UI挑战强加-登录表单(分步教程)

element-ui表单A step by step journey to create a good design from the daily UI challenge一步步走&#xff0c;从日常的UI挑战中创建出色的设计 内容 (Content) Introduction 介绍 Result demo 结果演示 Prerequisite 先决条件 Step by step guide 逐步指南 Conclusion 结…

GitHub 搜索技巧:如何更有效地搜索 issue、repo 和更多信息

大家好&#xff0c;我是若川。我持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此扫码加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

js 绘画js 绘画路径_绘画是一种技能,而不是才能

js 绘画js 绘画路径重点 (Top highlight)November 2019… some decided to start rocking a moustache, others were obsessed with baby Yoda. I decided to commit to drawing something every single day. As a way to keep myself accountable I started posting daily on …

点击页面元素跳转IDE对应代码,试试这几个工具!

大家好&#xff0c;我是若川。我持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此扫码加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

shields 徽标_徽标不够用时如何设计应用程序图标

shields 徽标What’s the first thing that comes to mind when you think about a particular app? Chances are, it’s the icon. And it’s certainly the first thing a user notices when deciding what app to install — similar to studying the supermarket shelves.…

基于Sentry高效治理前端异常

大家好&#xff0c;我是若川。我持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此扫码加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…

zoom 用户被锁定_重新考虑Zoom的用户体验

zoom 用户被锁定Zoom is a household name now. It’s weird, but a new reality for 2020. I’ve been able to reliably stay in touch with so many people and even throw surprise birthday parties! It has been one of the products that has kept me busy through this…

或许是我们学错了方向?

大家好&#xff0c;我是若川。最近来了一些新朋友&#xff0c;感谢大家关注~相比于原生 JS 等源码。我们或许更应该学习正在使用的组件库的源码&#xff08;如&#xff1a;element、antd、vant、semi、arco、tdesign 等&#xff09;&#xff0c;先从简单的看起&#xff0c;Butt…

Android 默认Tab标签大小及间距修改

一般来说&#xff0c;我都是用Android默认的Tab&#xff0c;但此时Android会根据你增加的Tab页面平均分配Tab标签&#xff0c;假如你只有两个Tab&#xff0c;那么长度将会很长&#xff0c;并且其高度略微过高&#xff0c;并不好看&#xff0c;网上解决这个问题有些是自定义Tab。…

ui设计看的书_5本关于UI设计的书

ui设计看的书Want to develop a better eye and vocabulary for judging layouts, type choices and imagery?是否想开发一种更好的眼神和词汇来判断布局&#xff0c;类型选择和图像&#xff1f; According to performance experts, the best way to learn is to gain lots o…

GitHub 这8大超实用小技巧,99.9%的人都不知道!

大家好&#xff0c;我是若川。我持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此扫码加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试…