Nodejs发布自己的npm包并制作成命令行工具的实例讲解

     & lt;跨在近日当我在使用npm上已经存在的一个包时,发现它有错误,于是决定自己实现这个功能,自己写一个npm包。;/span>之前      

  

  

选择一个文件夹,然后用命令cd进行去,然后执行npm init,这时会生成一长串表单,根据自己的实际情况填写内容

  

名称:填写你这个包的名字,默认是你这个文件夹的名字。不过这里要着重说一下,最好先去npm上找一下有没有同名的包。最好的测试方式就是,在命令行里面输入npm安装你要取的名字,如果报错,那么很好,npm上没有跟你同名的包,你可以放心大胆地把包发布出去。如果成功下载下来了……那么很不幸,改名字吧…

  

<强>版本:你这个包的版本,默认是1.0.0

  

<强>描述:强其实我也不知道是什么,按回车就好了……,这个用一句话描述你的包是干嘛用的

  

<强>入口点:强入口文件,默认是Index.js,你也可以自己填写你自己的文件名

  

<强>测试命令:强测试命令,这个直接回车就好了,因为目前还不需要这个。

  

<强> git存储库:这个是git仓库地址,如果你的包是先放到github上或者其他git仓库里,这时候你的文件夹里面会存在一个隐藏的.目录,npm会读到这个目录作为这一项的默认值。如果没有的话,直接回车继续。

  

<强>关键字:这个是一个重点,这个关系到有多少人会搜到你的npm包。尽量使用贴切的关键字作为这个包的索引。我这个包嘛,第一是在表达下工作的,然后又是一个插件插件,然后又是一个注册路由路由用的,而这个路由又是基于文件目录dir,所以很好就得出我的包的索引关键字。

  

<强>作者:写你的账号或者你的github账号吧

  

<强>许可:这个直接回车,开源文件来着…

  

然后它就会问你你是好# 63;

  

回车好吧!

  

然后我们回到我们的文件目录里面去看一看,发现多出来一个package.json文件

  

然后,在目录下新建一个索引。js文件,或者你刚才修改了那个入口点的值,那么你这个文件名也跟着改为那个值。

  

 Nodejs发布自己的npm包并制作成命令行工具的实例讲解

  

我的npm工程目录结构就是这样的,注意其中的本文件夹是我为了制作命令行工具才生成的,后面会讲到怎么生成命令行工具,当然,如果那不想生成命令行工具,这个文件夹就不需要了。

  

因为我把封装好的代码都扔在自由里面,所以,index.js里面也就一句话:

        module.exports=要求(。/lib)      

然后,最重要的,写好README.md,一个给大家描述你的包的减价文件,如果大家都不知道你的代码是做什么的,会有人去下载你的代码吗?哦,对了,最好写英文。

  

  

写完自己的npm包,测试运行没问题后就可以发布到npm上

  

首先得注册个npm帐号

  

用npm命令登陆一下

  

然后,在你的目录下使用npm发布

  

一般情况下,一旦你要修改你已经发布后的代码,然后又要执行发布操作,务必到package.json里面,把版本改一下,比如从1.0.0改为1.0.1,然后在执行npm发布,这样就可以成功发布了。

  

  

在使用Nodejs过程中,有很多包都支持全局安装,提供一个命令,然后在命令行我们就可以完成一些任务。有时候我们也需要开发这样的命令工具,在节点。js中发现弄个命令行工具特别轻松。我使用的是指挥官包来生成命令行工具

        美元npm安装指挥官      

然后cd到本目录下,新建一个js文件(名字自取),编写代码,在js文件顶部加上# !/usr/bin/env节点

  

<>强例如我的geAsar.js:

        # !/usr/bin/env节点   var asar=要求(“. ./lib/geAsar”)   var=程序要求(“指挥官”);      程序。版本(“v +需要(“. ./package.json”) .version)   .description(“操纵asar归档文件”)      program.command(“包& lt; dir>& lt; output>”)   .alias (“p”)   .description(“创建asar档案”)   .action(函数(__dirpath、输出){   asar.geAsar (__dirpath、输出);   console.log(输出+”文件成功生成”);   })   program.parse (process.argv)      如果(program.args。长度===0){   program.help ()   }

Nodejs发布自己的npm包并制作成命令行工具的实例讲解