最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何從0開始用node寫一個(gè)自己的命令行程序

 更新時(shí)間:2018年12月29日 14:21:42   作者:tiancai啊呆  
這篇文章主要介紹了如何從0開始用node寫一個(gè)自己的命令行程序,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

前言

什么是命令行程序呢?像我們常見的webpack,vue-cli都屬于命令行程序。

本文將帶你從0開始用node寫一個(gè)自己的命令行程序,并發(fā)布到npm。

準(zhǔn)備工作

我打算寫一個(gè)統(tǒng)計(jì)個(gè)人代碼提交量的命令行工具,起名 git-tool 。

npm地址見git-tool ,GitHub地址見 git-tool 。

1、在GitHub上新建一個(gè)項(xiàng)目git-tool。

2、克隆到本地進(jìn)行開發(fā)。

3、執(zhí)行npm init創(chuàng)建package.json文件。

// 其他代碼
"bin": {
  "git-tool": "./index.js"
},
// 其他代碼

bin字段里面的key值可以隨便取名,value值為對應(yīng)的執(zhí)行文件。

4、新建index文件。

#!/usr/bin/env node
console.log('git-tool')

#!/usr/bin/env node 的意思是讓系統(tǒng)自己去找node的執(zhí)行程序,該行必不可少。

5、執(zhí)行 npm link

如果執(zhí)行該命令報(bào)錯(cuò),參考 https://docs.npmjs.com/getting-started/fixing-npm-permissio

6、運(yùn)行 git-tool

我們發(fā)現(xiàn)控制臺(tái)會(huì)打印出git-tool。

圖一

實(shí)現(xiàn)

經(jīng)過以上步驟我們已經(jīng)基本搭好環(huán)境了,下面就可以開始寫自己的邏輯了。

參數(shù)讀取

process.argv 用來獲取命令行參數(shù)。

修改index.js文件

#!/usr/bin/env node
console.log('git-tool')
console.log(process.argv)

然后執(zhí)行 git-tool ss cd ,結(jié)果如下圖所示:

圖二

process.argv 返回一個(gè)數(shù)組,數(shù)組前兩位是固定的,分別是node程序的路徑和腳本存放的位置,從第三位開始才是額外輸入的內(nèi)容。

npm社區(qū)有一些優(yōu)秀的命令行參數(shù)解析包,如 yargs commander.js

我使用的是 commander.js

插件

commander.js 的基本使用很簡單,

#!/usr/bin/env node
const program = require('commander');
program.version('1.0.0')
program
 .command('codeLineNum')
 .description('統(tǒng)計(jì)git提交代碼量')
 .option("--author [author]", "統(tǒng)計(jì)指定作者git提交代碼量")
 .action(function (options) {
  console.log(options.author)
 })
program.parse(process.argv);

此時(shí)執(zhí)行 git-tool -h ,效果如下:

圖三

它會(huì)幫我們自動(dòng)做一些事情,很方便。

思路

我們要實(shí)現(xiàn)統(tǒng)計(jì)代碼提交量的目的,就必須借助git命令。

git log --author="username" --pretty=tformat: --numstat

該命令輸出如下:

圖四

第一列為增加的代碼行數(shù),第二列為刪除的代碼行數(shù),第三列為改動(dòng)的文件。

一些管道命令符可以處理這些數(shù)據(jù),但是Windows系統(tǒng)不支持。

所以我的思路是把數(shù)據(jù)寫到文件中,然后在逐行讀取進(jìn)行處理。

代碼

具體實(shí)現(xiàn)細(xì)節(jié)就不展開了,有興趣的可以去GitHub看源碼。

最終實(shí)現(xiàn)效果如下

圖五

圖六

發(fā)布npm包

1、創(chuàng)建npm賬戶(如果已有,略過該步驟)

注冊地址: https://www.npmjs.com/signup

2、登陸npm login

3、發(fā)布 npm publish

每次發(fā)布時(shí)都需要更改package.json 中的version;

發(fā)布需將npm registry地址設(shè)為 http://registry.npmjs.org

npm config set registry http://registry.npmjs.org

參考資料

手把手教你使用nodejs編寫cli(命令行)

Node.js 命令行程序開發(fā)教程-阮一峰

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入解析koa之異步回調(diào)處理

    深入解析koa之異步回調(diào)處理

    這篇文章主要介紹了深入解析koa之異步回調(diào)處理,我們研究一下koa當(dāng)中異步回調(diào)同步化寫法的原理,同樣的,我們也會(huì)實(shí)現(xiàn)一個(gè)管理函數(shù),是的我們能夠通過同步化的寫法來寫異步回調(diào)函數(shù)。,需要的朋友可以參考下
    2019-06-06
  • node.js中process進(jìn)程的概念和child_process子進(jìn)程模塊的使用方法示例

    node.js中process進(jìn)程的概念和child_process子進(jìn)程模塊的使用方法示例

    這篇文章主要介紹了node.js中process進(jìn)程的概念和child_process子進(jìn)程模塊的使用方法,結(jié)合實(shí)例形式分析了node.js中process進(jìn)程和child_process子進(jìn)程模塊相關(guān)概念、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • Node.js入門教程:在windows和Linux上安裝配置Node.js圖文教程

    Node.js入門教程:在windows和Linux上安裝配置Node.js圖文教程

    這篇文章主要介紹了Node.js入門教程:在windows和Linux上安裝配置Node.js的方法,本文圖文并茂,步驟明細(xì),是學(xué)習(xí)安裝node.js的絕佳教程,需要的朋友可以參考下
    2014-08-08
  • Node.js中Swagger的使用指南詳解

    Node.js中Swagger的使用指南詳解

    Swagger(目前用OpenAPI?Specification代替)是一個(gè)用于設(shè)計(jì)、構(gòu)建、記錄和使用REST?API的強(qiáng)大工具,本文將探討使用Swagger的一些關(guān)鍵技巧,需要的可以參考一下
    2024-01-01
  • 一文詳解Node中module.exports和exports區(qū)別

    一文詳解Node中module.exports和exports區(qū)別

    這篇文章主要介紹了一文詳解Node中module.exports和exports區(qū)別
    2023-03-03
  • 關(guān)于node使用multer進(jìn)行文件的上傳與下載

    關(guān)于node使用multer進(jìn)行文件的上傳與下載

    這篇文章主要介紹了關(guān)于node使用multer進(jìn)行文件的上傳與下載,Multer是一個(gè)Node.js中間件,用于處理表單數(shù)據(jù)中的multipart/form-data類型,需要的朋友可以參考下
    2023-04-04
  • 配置Node.js環(huán)境變量詳細(xì)圖文教程

    配置Node.js環(huán)境變量詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于配置Node.js環(huán)境變量詳細(xì)圖文教程的相關(guān)資料,在Node.js中設(shè)置環(huán)境變量非常簡單,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 如何通過node.js來寫接口詳解

    如何通過node.js來寫接口詳解

    最近研究了一下nodejs寫接口,發(fā)現(xiàn)接口并不難寫,這篇文章主要給大家介紹了關(guān)于如何通過node.js來寫接口的相關(guān)資料,文中通過實(shí)例代碼和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 使用nvm管理多版本node的詳細(xì)教程

    使用nvm管理多版本node的詳細(xì)教程

    在開發(fā)工作中,經(jīng)常在不同的項(xiàng)目中使用不同版本的node去開發(fā),換一個(gè)項(xiàng)目在重新安裝node太麻煩,所以使用nvm來管理多版本的node開發(fā)環(huán)境,就非常方便了,所以本文給大家介紹了如何使用nvm管理多版本node,需要的朋友可以參考下
    2024-08-08
  • 淺談node.js中async異步編程

    淺談node.js中async異步編程

    本文嘗試結(jié)合Marc Fasel的指導(dǎo)思想和筆者的實(shí)踐經(jīng)驗(yàn)來介紹一些NodeJS的異步編程風(fēng)格,希望對NodeJS的初學(xué)者有所啟發(fā)。
    2015-10-10

最新評(píng)論

防城港市| 改则县| 仙桃市| 博客| 邓州市| 额尔古纳市| 含山县| 醴陵市| 奇台县| 马边| 台南县| 鸡泽县| 尚志市| 新乡县| 绥德县| 正宁县| 宜川县| 洛隆县| 德阳市| 揭阳市| 惠州市| 枝江市| 福清市| 两当县| 集贤县| 盐山县| 达日县| 根河市| 隆尧县| 广元市| 甘肃省| 防城港市| 承德市| 师宗县| 凭祥市| 日土县| 卢湾区| 东兰县| 中江县| 巫溪县| 塘沽区|