【源码学习】尝试发布自己的第一个npm包

1,274 阅读3分钟

前言

    一直仰望那些发布自己npm包的大佬,但是由于自己的懒惰,自主学习时间的都很少,更不用说发布自己的npm包了。前端领域知识更新速度很快,逆水行舟不进则退,之前苦于没有很好学习方法的我,最近开始动手先去实践,让自己慢慢进入一个好的学习状态,下面就直接开始吧!

目标

 发布一个自动提升版本、打 tag、生成 changelog ,规范commit提交等功能的npm包;    

实现

  1. 注册npm账号( npm (npmjs.com)),注册很简单,根据提示完成简单信息录入后完成注册。 微信截图_20230311215822.png

  2. github上新建仓库,需要添加LICENSE开源协议,类型我选的是MIT 微信截图_20230311220216.png

  3. 项目拉取至本地,并初始化及安装依赖

  4. 安装git-cz

  • npm安装
npm i git-cz -D
  • packge.json中加入脚本
{ 
    "scripts": { 
        "commit": "git-cz" 
     } 
}
  1. 安装relese-it及插件
npm init release-it 
npm i @release-it/conventional-changelog -D
  1. relese-it安装完成后项目根目录自动生成release-it.json,打开该文件,将以下内容复制进去
{ 
    "github": { 
        "release": false 
    }, 
    "git": { 
        "commitMessage": "release: v${version}" 
     },
    "npm": { 
        "publish": false 
     }, 
    "hooks": { 
        "after:bump": "echo 更新版本成功" 
     }, 
    "plugins": { 
         "@release-it/conventional-changelog": { 
              "preset": "angular", 
              "infile": "CHANGELOG.md" 
            } 
     } 
}

  1. 执行release
npm run release
  1. 登录npm,第一次登录失败了,于是使用nrm切换npm源后再成功登录
npm login
//失败后
nrm ls 
nrm use npm
  1. 执行npm发布命令,发布成功 微信截图_20230311224918.png
  2. 最后因为是测试的npm包,需要执行删除命令,PS:删除后可再次发布
npm unpublished <name> -force
  1. NPM官网查询此包已删除 微信截图_20230311230257.png

源码学习

  1. 关于 npm init 原理 ,查阅npm文档可知:
  • npm init release-it ==> npx create-release-it
  • create-release-it 中的最后的源码 [await execa('npm', ['install', 'release-it', '--save-dev'], { stdio: 'inherit' });],既是执行安装

微信截图_20230312080024.png 2. 关于npx,由上个问题引申到npx,以前不太了解,查阅资料后发现:

  • npm是包管理工具,但是它不能直接执行包的功能,一般是将执行命令写入packge.json, 通过npm解析packge.json文件,再解析到包的bin文件路径,在bash中执行
  • npm 5.2.0之后内置了npxnpx明显的功能就是可以在不用安装npm包的情况下直接执行包的功能
  • npx的优势就是较npm执行更为灵活,可以节省磁盘空间,减少全局本地环境变量的污染

总结

  • git-cz能够很好的规范我的commit提交
  • release-it可以很好地提升效率,适用于所有项目,比如自动提升版本,打tag等,虽然现在用不上,但是以后应该可以多用用
  • 了解了npm发包的流程,没有想象中的复杂,最重要的是能将好的经验和想法变成一个可发布的npm包,还需努力

最近的时间一直在寻找让自己沉浸学习状态的方法,刚好在公众号看到若川大佬的源码学习活动,就立即加入了,临渊羡鱼不如退而结网,不是说开始一件事情最好的时机就是现在么,如今的大环境下,迷茫是普遍的,学习是很好沉淀自己的途径,提升自己才能走得更远,希望能够将学习的状态坚持下去。

参考文章

  1. 还在用开发者工具上传小程序? 快来试试 miniprogram-ci 提效摸鱼 - 掘金 (juejin.cn)
  2. 图文结合简单易学的npm 包的发布流程 - 掘金 (juejin.cn)