渝北| 尤溪| 民和| 山丹| 漳平| 大港| 木里| 宜秀| 容城| 澎湖| 嘉禾| 贵南| 平南| 虎林| 文县| 易县| 阿荣旗| 红原| 宜章| 屏东| 和静| 蒙阴| 驻马店| 京山| 山西| 赣榆| 蒲江| 单县| 特克斯| 乌兰浩特| 波密| 梨树| 定结| 吐鲁番| 曲周| 正阳| 高雄市| 鄂托克前旗| 鹰手营子矿区| 边坝| 黟县| 白云矿| 雷州| 石家庄| 王益| 崇礼| 鄂州| 岚皋| 铅山| 桑植| 云安| 涿鹿| 绵阳| 莱阳| 岫岩| 榆林| 新宾| 莲花| 栖霞| 北票| 成安| 甘谷| 乌兰浩特| 梅州| 汝城| 上甘岭| 云霄| 潍坊| 赫章| 前郭尔罗斯| 鄂州| 临西| 丰县| 南部| 罗甸| 旅顺口| 宁国| 江陵| 宁津| 南昌县| 舒城| 泰来| 平远| 吴桥| 获嘉| 农安| 汪清| 屯昌| 晋江| 公安| 和布克塞尔| 卓尼| 咸阳| 桃江| 井冈山| 略阳| 长治县| 伊通| 土默特右旗| 修武| 陈仓| 五原| 万载| 宁城| 周宁| 浦北| 阳城| 慈利| 祁阳| 丰顺| 河池| 临潼| 互助| 平塘| 新城子| 苏家屯| 大竹| 若羌| 防城港| 红安| 三江| 恭城| 旬阳| 鄂尔多斯| 肃南| 利川| 剑阁| 容城| 曹县| 沿河| 蒙自| 汝南| 开封市| 覃塘| 金平| 鹿寨| 龙游| 道孚| 寻甸| 黄梅| 涉县| 堆龙德庆| 巨鹿| 宁县| 永宁| 淄博| 开封市| 凤凰| 阿拉善右旗| 科尔沁左翼后旗| 纳雍| 成武| 弓长岭| 交口| 唐县| 息烽| 南昌县| 班玛| 洞头| 涟源| 隆林| 永宁| 新蔡| 凌源| 阜阳| 梅河口| 科尔沁右翼中旗| 荆州| 綦江| 武昌| 武胜| 昔阳| 泗水| 延庆| 松潘| 西宁| 台南市| 凌源| 崇阳| 玉龙| 方山| 乳山| 无极| 武乡| 同安| 襄垣| 牟平| 洪湖| 阜城| 确山| 云梦| 和政| 新竹县| 凉城| 印台| 蒙阴| 简阳| 垦利| 罗城| 寻甸| 松江| 临沭| 赣州| 深圳| 竹山| 通河| 大理| 滁州| 益阳| 大港| 新宁| 喀喇沁左翼| 湖州| 侯马| 柯坪| 托克逊| 寿阳| 古丈| 平昌| 老河口| 阿勒泰| 河源| 富锦| 玉树| 深泽| 宁城| 友好| 志丹| 靖西| 平乡| 怀化| 三都| 山阳| 梁河| 南芬| 康乐| 金州| 临夏市| 固安| 开平| 雅安| 凤翔| 弓长岭| 武冈| 大城| 博乐| 台南县| 临漳| 竹山| 资兴| 峨边| 安国| 普宁| 迭部| 沙河| 汨罗| 德格| 阜康| 临县| 穆棱| 阜城| 牡丹江| 松桃| 思南| 大赢家比分备用
数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类全部分类技术牛文全部分类教程最新网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销开发数据库服务器系统虚拟化云计算嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

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

来源:脚本之家  责任编辑:小易  
晨丽赌场官网 (郭振华葛高远)
<span style="font-family:Arial, Helvetica, sans-serif;background-color:rgb(255,255,255);">近日当我在使用npm上已经存在的一个包时,发现它有bug;于是决定自己实现这个功能,自己写一个npm包。</span> 

下面我记录一下自己的实现过程。

1. npm init

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

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

version:你这个包的版本,默认是1.0.0

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

entry point:入口文件,默认是Index.js,你也可以自己填写你自己的文件名

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

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

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

author:写你的账号或者你的github账号吧

license:这个直接回车,开源文件来着。。。

然后它就会问你Are you ok?

回车Ok!

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

然后,在目录下新建一个index.js文件,或者你刚才修改了那个entry point的值,那么你这个文件名也跟着改为那个值。

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

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

module.exports=require('./lib')

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

2. npm publish

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

首先得注册个npm帐号

用npm命令登陆一下

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

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

3. 生成命令行工具

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

$ npm install commander

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

例如我的geAsar.js:

#!/usr/bin/env node
var asar = require('../lib/geAsar')
var program = require('commander');

program.version('v' + require('../package.json').version)
  .description('Manipulate asar archive files')

program.command('pack <dir> <output>')
  .alias('p')
  .description('create asar archive')
  .action(function (__dirpath, output) {
   asar.geAsar(__dirpath,output);
   console.log(output+"文件成功生成");
  })
program.parse(process.argv)

if (program.args.length === 0) {
 program.help()
}

然后还需在package.json中添加

"bin": { 
 "geAsar": "./bin/geAsar.js" 
 }, 

运行 node bin/geAsar.js 会显示当前文件夹下的所以文件和文件夹名。这个玩意儿真的跑起来了.

全局运行命令调试

install

如果在项目目录下运行没有问题,可以将当前目录模块安装到全局,也可以采用此方法来更新你的命令行工具

sudo npm install . -g

link

或者目录输入 npm link 会自动添加全局的 symbolic link ,然后就可以使用自己的命令了。 (我用的是这个)

以上这篇Nodejs 发布自己的npm包并制作成命令行工具的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:


  • 本文相关:
  • 利用node.js制作命令行工具方法教程(一)
  • node通过npm写一个cli命令行工具
  • 详解node.js如何开发命令行工具
  • 浅析nodejs npm常用命令
  • 实例详解nodejs 保存 payload 发送过来的文件
  • nodejs使用express获取get和post传值及session验证的方法
  • highcharts+nodejs搭建数据可视化平台示例
  • node.js操作mongodb简单示例分享
  • nodejs下打包模块archiver详解
  • 详解node.js平台下express的session与cookie模块包的配置
  • node.js 异步异常的处理与domain模块解析
  • node.js中dns模块学习总结
  • node.js 使用jade模板引擎的示例
  • nodejs学习item【入门手上】
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved
    泾川镇 江西新茂实业发展有限公司 学知桥南 广东顺德区均安镇 睢宁县
    仓山镇政府 毛窝胡同 兴围村 郭屋 三街村
    中国线上博彩 电子博彩 线上博彩