欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何從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值為對(duì)應(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賬戶(如果已有,略過該步驟)

注冊(cè)地址: 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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • node.js實(shí)現(xiàn)pdf與圖片互轉(zhuǎn)代碼示例

    node.js實(shí)現(xiàn)pdf與圖片互轉(zhuǎn)代碼示例

    因工作需求,記錄一次如何在Node中pdf與圖片互轉(zhuǎn)各種操作,這篇文章主要給大家介紹了關(guān)于node.js實(shí)現(xiàn)pdf與圖片互轉(zhuǎn)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • node.js中的Socket.IO使用實(shí)例

    node.js中的Socket.IO使用實(shí)例

    這篇文章主要介紹了node.js中的Socket.IO使用實(shí)例,本文講解了Socket.IO的安裝、結(jié)合express來構(gòu)建服務(wù)器、基本使用方法及一個(gè)網(wǎng)絡(luò)聊天室的完整案例,需要的朋友可以參考下
    2014-11-11
  • webpack創(chuàng)建項(xiàng)目并打包的詳細(xì)流程記錄

    webpack創(chuàng)建項(xiàng)目并打包的詳細(xì)流程記錄

    webpack在前端工程領(lǐng)域起到了中流砥柱的作用,理解它的內(nèi)部實(shí)現(xiàn)機(jī)制會(huì)對(duì)你的工程建設(shè)提供很大的幫助(不論是定制功能還是優(yōu)化打包),下面這篇文章主要給大家介紹了關(guān)于webpack創(chuàng)建項(xiàng)目并打包的詳細(xì)流程,需要的朋友可以參考下
    2023-03-03
  • nodejs配置express服務(wù)器運(yùn)行自動(dòng)打開瀏覽器詳細(xì)步驟

    nodejs配置express服務(wù)器運(yùn)行自動(dòng)打開瀏覽器詳細(xì)步驟

    在nodejs中使用express來搭建框架可以說是非常的簡單方便,下面這篇文章主要給大家介紹了關(guān)于nodejs配置express服務(wù)器運(yùn)行自動(dòng)打開瀏覽器的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • 從零開始學(xué)習(xí)Node.js系列教程一:http get和post用法分析

    從零開始學(xué)習(xí)Node.js系列教程一:http get和post用法分析

    這篇文章主要介紹了從零開始學(xué)習(xí)Node.js系列教程一:http get和post用法,結(jié)合具體實(shí)例形式分析了nodejs中g(shù)et與post請(qǐng)求的使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-04-04
  • nvm安裝步驟及使用方法

    nvm安裝步驟及使用方法

    nvm是一個(gè)管理nodejs版本的工具。在實(shí)際的開發(fā)中,有些項(xiàng)目的開發(fā)依賴需要低版本的nodejs運(yùn)行環(huán)境,有些則需要高版本的nodejs,此時(shí)我們就需要使用nvm來切換nodejs版本,接下來通過本文給大家講解nvm安裝步驟及使用方法,感興趣的朋友一起看看吧
    2023-01-01
  • 一文詳解node.js有哪些全局對(duì)象呢

    一文詳解node.js有哪些全局對(duì)象呢

    這篇文章主要介紹了一文詳解node.js有哪些全局對(duì)象呢,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • node.js中的fs.chmod方法使用說明

    node.js中的fs.chmod方法使用說明

    這篇文章主要介紹了node.js中的fs.chmod方法使用說明,本文介紹了fs.chmod方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node.js中路由,中間件,get請(qǐng)求和post請(qǐng)求的參數(shù)詳解

    node.js中路由,中間件,get請(qǐng)求和post請(qǐng)求的參數(shù)詳解

    本文給大家匯總介紹了node.js中的路由,中間件,get請(qǐng)求和post請(qǐng)求的參數(shù)的使用方法,非常的詳細(xì),有需要的小伙伴可以參考下
    2017-12-12
  • 淺析Nodejs npm常用命令

    淺析Nodejs npm常用命令

    這篇文章主要介紹了淺析Nodejs npm常用命令的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06

最新評(píng)論