当前位置: 首页 > 后端技术 > Node.js

优秀前端人必知的NPM账号管理工具——nucm

时间:2023-04-03 20:19:22 Node.js

原文发表于个人博客掘金:优秀前端人必知的NPM账号管理工具——nucm前言你是否经常忘记NPM帐号和密码?频繁切换NPM账号是不是特别头疼?如果你恰好有以上困扰,安装nucm这个node小工具,可以快速方便地管理npm账户。nucm简介nucm可以帮助您快速轻松地管理您的NPM帐户信息。目前只管理NPM源信息。nucm:NpmUserChangeManager(Npm用户切换管理)目前nucm主要管理NPM账户创建的AccessTokens。AccessTokens的作用可以简单理解为每个npm账号可以生成不同类型的releasetoken,releasetoken可以直接用于npm包的自动发布。Nucm主要提供一些简单的操作命令来增加和删除AccessTokens值,以及查看和切换,从而达到管理NPM账户的目的。AccessTokens官方解释如下:访问令牌是在使用API或npm命令行界面(CLI)时使用您的用户名和密码对npm进行身份验证的替代方法。访问令牌是一个十六进制字符串,您可以使用它来进行身份验证,并赋予您安装和/或发布模块的权利。中文翻译:访问令牌是使用API或NPM命令行界面(CLI)时使用用户名和密码向NPM进行身份验证的替代方法。访问令牌是一个十六进制字符串,您可以使用它来进行身份验证并授予您安装和/或发布模块的权利。三种人会使用nucm:1.经常忘记自己的npm账号和密码的人2.有多个npm账号的人3.需要经常切换npm账号的人时间长了很容易忘记您的NPM帐户和密码。如果你还注册了多个npm账号,更容易造成记忆混乱。你可能需要绞尽脑汁记住每次登录NPM账户,然后进行多次入金和出金操作。如果我们程序员的记忆力比常人好,能记住账号密码,但是这些账号和密码中含有大小写字母和特殊符号,我们每次输入的时候都需要非常严格,千万不能输入错误字符,否则我们将无法登录。所以无论如何,我们确实需要一款NPM账户管理工具来管理平时很少用到的NPM账户密码,而nucm正是因为命令简单,功能实用而受到大家的特别青睐。人们现在可以执行npminstallnucm-g来安装和下载。常用nucm命令用法:nucm[options][command]选项:-v,--versionshowversion-h,--help显示命令的帮助命令:ls[options]showaccountlistuseswitchaccountaddaddaccountdelremoveaccountlocalize使用本地化语言installinitializehelp[command]显示命令的帮助命令描述ls[options]查看账户列表useswitchaccountaddaddaccountdelremoveaccountlocalize使用本地化语言install初始化nucm项目实践目前nucm已经完全用在了团队的日常中,可以帮助我快速切换个人账号和团队算了,真是了不起,人人都夸“好”!下面简单介绍一下初次使用时的基本操作步骤。第一步:安装$npminstall-gnucm#oryarnglobaladdnucm安装成功后,执行nucm-v验证是否安装成功(大家都知道)。第二步:添加账号1.在官网登录NPM账号。在页面右上角,点击“配置文件”图片,然后点击“访问令牌”。2.单击以生成新标记。3.命名你的token4。选择accesstokenType的名称(一般选择Publish,具体请参考文档)5、点击GenerateToken。6.从页面顶部复制令牌。7、执行nucmadd添加一个账户,name为账户名,access-tokens为第6步复制的token(添加成功会有控制台提示)。例如:$nucmaddbeezenxxxxxxxxxxxxxxxxx账户添加成功第三步:查看账户列表执行nucmls查看刚刚添加的账户是否出现在账户列表中,例如:#Defaultdisplaydesensitized$nucmlsbeezend--xxxxxx......xxxxbeezen---xxxxxx...xxxx*beeze----xxxxxx...xxxx#显示详细列表$nucmls-l#ornucmls--listbeezend--xxxxxxxxxxxxxxxxxxxxxxxxbeezen---xxxxxxxxxxxxxxxxxxxxxxxx*beeze----xxxxxxxxxxxxxxxxxxxxxxxx第四步:切换账户执行nucmuse切换到指定账户,name为第二步添加的账户名。例如:$nucmusebeezen已经切换到账户beezen第5步:发布到对应的npm包目录,执行npmpublish,将使用第4步账户的AccessTokens发布npm包。其他辅助命令1、执行nucmlocalize切换本地化语言,如英文或中文,目前仅支持en或cn。例如:$nucmlocalizecn已经切换到cn语言$nucmlocalizeen切换到en2语言,执行nucmdel删除添加的账户。例如:$nucmaddbeezenxxxxxxxxxxx#添加新账户添加账户成功$nucmdelbeezen#删除账户删除账户成功3.执行nucminstall会初始化~/.nucmrc配置文件中的基本配置内容。(注:第一次全局安装nucm包时会默认执行nucminstall命令,一般不需要主动执行)$nucminstallnucm初始化成功nucm源码解析nucm是一个cli命令行工具,其主要内部逻辑是使用commandernpm包来解析控制台输入的命令的参数,并执行指定的逻辑。相关命令的执行逻辑主要是读写~/.nucmrc文件中的配置信息,然后更改~/.npmrc文件中账户对应的AccessToken值,从而达到自由自在的目的切换帐户。流程图如下:项目源码项目结构如下:.├──CHANGELOG.md#ReleaseNotes├──LICENSE#开源协议├──README.md#英文文档├──README_CN.md#中文文档├──bin│└──index.js#cli主入口├──package.json#npmpackageinformation├──src│├──actions#操作说明││├──base.js││└──init.js│├──index.js#基本逻辑│├──lang#本地化描述配置文件││└──index.js│└──utils#Tools│└──index.js└──yarn.lock#锁核心代码分析使用commander整体进行命令管理,并根据命令。constprogram=require("指挥官");const{getLangMessage}=require("../src/utils/index");//国际化提示辅助函数const{getUserList}=require("../src/actions/base");......program.command("ls").option("-l,--list",getLangMessage("MSG_ls")).description(getLangMessage("MSG_accountList")).action(getUserList);...每个action函数的主要逻辑就是读写~/.nucmrc,~/.npmrc,~/.nrmrc配置文件,并返回指定格式的日志。典型函数如下:/***获取用户列表*/functiongetUserList(options){letnpmAccountList=config.npmAccountList;//从配置文件中获取账户列表letuserList=Object.keys(npmAccountList).map((key)=>{//根据nucmls--list命令,是否加上`--list`来判断是否脱敏letvisibleToken=options.list?npmAccountList[key]["access-tokens"]:desensitize(npmAccountList[key]["access-tokens"]);//脱敏处理if(npmAccountList[key]["is-current"]){//is-current字段为true的账户为当前激活的账户re转colors.green(`*${key}${line(key,10)}${visibleToken}`);}返回`${key}${line(key,10)}${visibleToken}`;}).join("\n");控制台日志(用户列表);//日志打印}最后nucm真的很好用!在后续计划中,将支持管理非npm来源的账号信息,同时适配官方npmlogin等命令。同时,还将着力提升整体交互体验,提升运营响应效率。最后,欢迎开源。社区成员可以多提宝贵建议,欢迎三连Star+Fork+Watch。Git项目地址:https://github.com/beezen/nucm