设为首页 收藏本站
查看: 752|回复: 0

[经验分享] nodejs模块发布及命令行程序开发

[复制链接]

尚未签到

发表于 2017-2-24 09:43:27 | 显示全部楼层 |阅读模式
前置技能


  • npm工具为nodejs提供了一个模块和管理程序模块依赖的机制,当我们希望把模块贡献出去给他人使用时,可以把我们的程序发布到npm提供的公共仓库中,为了方便模块的管理,npm规定要使用一个叫package.json的文件来描述我们模块的名称、版本等信息。  


  • 我们贡献出去的程序模块,可能也依赖了别人所编写的模块,所以需要在package.json中写明我们依赖了哪些模块,便于别人安装。  


  • 简单的nodejs程序可以通过 node xxx.js 来运行,当我们希望直接在控制台中使用xxx命令运行nodejs程序时,需要创建一个cmd命令文件(windows下),并把它放到path路径下,npm提供了一个自动完成这个工作的流程,这个也是在package.json里边配置的。
  基于以上几点,我觉得有必要挨个理解一下package.json里边的配置项:我理解翻译的package.json文档

模块发布
  发布一个npm模块非常简单。

注册npm账户
  这个账户注册体验多好啊,不过记得密码别搞忘记了。
  
npm adduser
  
Username: zoucz
  
Password: ******
  
Email: 405966530@qq.com

创建一个测试模块
  新建一个文件夹,npm init,一路enter ,要注意的是name不能是已经被别人抢占的,可以到http://npmjs.org这里查询。
  
此时文件夹下会生成一个package.json文件,如果看过package.json里边配置的含义,这里就比较好理解了。
  
新建一个index.js,内容如下:
  
DSC0000.png
  
此时模块就创建完毕了,简单吧!

发布模块
  在刚刚新建的文件夹下打开cmd,运行npm publish ,模块发布完毕!
  
要注意的是每次发布的时候都需要增加版本号。
  
此时在http://npmjs.org这里就可以查询到刚刚发布的模块了,我测试模块名称是zoucz,那么此时别人也可以通过 npm install zoucz来使用我发布的模块了。

开发控制台命令程序
  以windows下为例,我们怎么样才能创建一个cmd命令呢?
  1.在环境变量里边添加一段:";D:/test"
  2.在d盘test目录下创建一个mycmd.cmd文件
  这时就可以使用mycmd命令了。那么要怎么在cmd中调用node程序呢? 很简单:
  3.在那个mycmd.cmd文件里边写上 node path/to/xxx.js,就可以了。
  使用npm创建控制台命令程序,我们不需要自己完成上面的步骤,只需要增加一行配置就可以了

添加要执行的nodejs代码文件
  在模块根目录下添加bin目录
  
DSC0001.png
  
新建zoucz.js内容如下:
#!/usr/bin/env node  
var util=require("util");
  
console.log("hello,i'm zouchegnzhuo,you can type command name/site/email");
  
var cmd=process.argv[2];
  
if(cmd){
  switch(cmd){
  case "name":
  console.log("邹成卓");
  break;
  case "site":
  console.log("http://zoucz.com");
  break;
  case "email":
  console.log("405966530@qq.com");
  break;
  }
  
}
  要注意的是,文件首行的 #!/usr/bin/env node 一定要添加 ,这一行的意思是生成cmd文件的时候用什么路径的什么程序来运行上面的代码,文章末尾的demo中给出了不加的后果。

在package.json中配置bin
  在package.json中配置
  
DSC0002.png
  
模块在npm install的时候会生成zoucz和zoucz_err两个cmd文件。

发布模块
  添加好上面的配置后,发布模块,别的码农就可以安装使用此命令了。

安装使用控制台命令程序
  在cmd中 npm install -g zoucz ,就可以安装上面的模块,安装完成后可以使用zoucz命令和zoucz_err命令。
  
DSC0003.png
  zoucz_err是没有在js文件首行写#!/usr/bin/env node的后果:
  
DSC0004.png
  
运行命令之后:
  
DSC0005.png
  我们顺着图片中的路径,在C:\Users\czzou\AppData\Roaming\npm目录下可以找到npm为我们创建的cmd文件路径:
  
DSC0006.png
  
可以看到npm创建cmd文件的同时也创建了linux下使用的文件。
  
现在来看一下为什么执行zoucz_err会报错,分别打开两个cmd文件:
  
zoucz.cmd
  
DSC0007.png
  
zoucz_err.cmd
  
DSC0008.png
  
后者压根就没有用node去执行那段代码,当然会报错了~
  
这里要注意的是npm install -g 全局安装的时候,cmd文件是被创建在上面的路径下的,如果没有-g选项,局部安装,则会被创建在项目根目录node_modules/.bin 目录下。

最后
  npm可以帮我们做很多事情,做node开发的同学们都有必要花时间慢慢把npm的文档啃完https://docs.npmjs.com
  
本文所使用的demo地址:https://github.com/zouchengzhuo/nodejsLearn/tree/master/zoucz
  本文转自我的个人网站,原文地址,欢迎前往交流讨论
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346455-1-1.html 上篇帖子: nodejs服务器anywhere简介 下篇帖子: 前端工程搭建NodeJs+gulp+bower
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表