摘要:命令行工具,即。我們在寫命令行工具的時候,需要指定一個可執行文件?;蛘咚恼{試我們全局安裝一個包后,可以全局調用這個命令行工具。
命令行工具,即 Cli(command-line interface)。是在圖形用戶界面得到普及之前使用最為廣泛的用戶界面,它通常不支持鼠標,用戶通過鍵盤輸入指令,計算機接收到指令后,予以執行。在學習這篇教程之前,你需要先了解NodeJs,NPM和一些常用的shell命令!
對于前端開發者來說,用NodeJs開發命令行工具是最方便和快速的,借助于 npm,可以方便的進行調試和發布。
NodeJs的命令行使用如下圖所示:
那么怎么從零開始寫一個命令行工具呢?
一、創建一個新項目首先,我們創建一個npm項目。
$ mkdir cli-demo $ cd cli-demo $ npm init
通過以上步驟,我們新建了一個cli-demo文件夾,并且在cli-demo文件夾中初始化了一個package.json文件。package.json的內容大概是這樣:
{ "name": "cli-demo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "", "license": "MIT" }二、新建一個可執行文件
我們在cli-demo文件夾中,新建一個js文件,這里我們新建一個名為cli.js的文件。
我們在寫命令行工具的時候,需要指定一個可執行文件。在package.json中,bin字段用來映射命令名和可執行文件。在通過npm install -g全局安裝的時候,npm會symlink可執行文件到prefix/bin文件夾。
如果通過npm install本地安裝的時候, npm會symlink可執行文件到./node_modules/.bin/文件夾。(完整的字段說明在這里:https://docs.npmjs.com/files/...
如何讓一個js文件變成可執行文件?只需要在js文件的頭部加上一行代碼:
#!/usr/bin/env node
稍微完善一下cli.js, 如下:
#!/usr/bin/env node console.log("Hello world!");三、指定cli.js為執行文件
我們需要在package.json中,指定bin字段將cli.js作為我們的執行文件。
{ "bin": "cli.js" }
或者:
{ "bin": { "cli-demo": "cli.js" } }四、調試
我們全局安裝一個cli包后,可以全局調用這個命令行工具。那我們在開發調試的時候, 就要用到npm link這個命令了。
在npm包文件夾下執行npm link命令,會創建一個符號鏈接,鏈接全局文件夾{prefix}/lib/node_modules/和你執行npm link的包文件夾。 注意:package-name是package.json中的name, 而不是文件夾名。
詳細的解釋在這兒: https://docs.npmjs.com/cli/link
我們在cli-demo文件夾下執行npm link命令后,就可以全局使用cli-demo命令了。
$ cli-demo Hello world!五、使用命令行輔助工具
在我們寫命令行工具的時候,使用一些輔助工具會讓我們開發更高效。以下是一些我用過的一些輔助工具:
Commander.js - 幫助參數解析,我最常用
optionator - 幫助參數解析,Eslint 使用
Inquirer.js - 常見交互式命令行
chalk - 命令行輸出自定義顏色
修改我們的cli.js,使用Commander.js做一些更復雜的操作。
首先,安裝commander.js:
npm i commander
cli.js代碼:
#!/usr/bin/env node const program = require("commander"); program .version("0.1.0") .option("-n, --yourname [yourname]", "Your name") .option("-g, --glad", "Tell us you are happy") .parse(process.argv); if (program.yourname) { console.log(`Hello, ${program.yourname}! ${program.glad ? "I am very happy to see you!" : ""}`); }
在命令行中使用:
$ cli-demo -h Usage: cli-demo [options] Options: -V, --version output the version number -n, --yourname [yourname] Your name -g, --glad Tell us you are happy -h, --help output usage information
$ cli-demo -n Jay Hello, Jay!
$ cli-demo -n Jay -g Hello, Jay! I am very happy to see you!六、發布
單純的發布包到npm非常簡單,只需要一條命令:
npm publish
但是一個完善規范的發布流程不僅如此,還需要考慮版本號的規范(Semver),commit message的規范,tag等一系列因素。如果手動來搞的話,是挺麻煩的。
這里推薦使用relix, 一步搞定!
npm i relix -g
進入cli-demo文件夾,然后:
relix --patch
會自動幫你生成新版本號,生成提交信息,打tag,推送提交和tag到github,發布npm包!relix的詳細用法請看relix文檔。
本章完。
進階閱讀:怎么樣寫一個能告訴你npm包名字是否被占用的工具我的Github:https://github.com/PengJiyuan
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97194.html
摘要:和前面幾節課類似的分析這節課就不做了,對于分頁,請求什么的,大家可以直接參考前面的四節課,這一刻主要特別的是,我們在采集商品的同時,會將京東的商品評價采集下來。 系列教程: 手把手教你寫電商爬蟲-第一課 找個軟柿子捏捏 手把手教你寫電商爬蟲-第二課 實戰尚妝網分頁商品采集爬蟲 手把手教你寫電商爬蟲-第三課 實戰尚妝網AJAX請求處理和內容提取 手把手教你寫電商爬蟲-第四課 淘寶網商品爬...
摘要:和前面幾節課類似的分析這節課就不做了,對于分頁,請求什么的,大家可以直接參考前面的四節課,這一刻主要特別的是,我們在采集商品的同時,會將京東的商品評價采集下來。 系列教程: 手把手教你寫電商爬蟲-第一課 找個軟柿子捏捏 手把手教你寫電商爬蟲-第二課 實戰尚妝網分頁商品采集爬蟲 手把手教你寫電商爬蟲-第三課 實戰尚妝網AJAX請求處理和內容提取 手把手教你寫電商爬蟲-第四課 淘寶網商品爬...
摘要:可以通過傳入待刪除數組元素組成的數組進行一次性刪除。如果后臺返回的為表示登錄的已失效,需要重新執行。等所有的異步執行完畢后,再執行回調函數。回調函數的參數是每個函數返回數據組成的數組。 其實在早之前,就做過立馬理財的銷售額統計,只不過是用前端js寫的,需要在首頁的console調試面板里粘貼一段代碼執行,點擊這里。主要是通過定時爬取https://www.lmlc.com/s/web/...
摘要:老規矩,爬之前首先感謝淘寶公布出這么多有價值的數據,才讓我們這些爬蟲們有東西可以搜集啊,不過淘寶就不用我來安利了廣大剁手黨相信睡覺的時候都能把網址打出來吧。 系列教程: 手把手教你寫電商爬蟲-第一課 找個軟柿子捏捏 手把手教你寫電商爬蟲-第二課 實戰尚妝網分頁商品采集爬蟲 手把手教你寫電商爬蟲-第三課 實戰尚妝網AJAX請求處理和內容提取 都已經三節課了,大家活動活動手腳,咱們開始一場...
閱讀 3780·2023-04-25 21:09
閱讀 3129·2021-10-20 13:48
閱讀 2955·2021-09-24 10:25
閱讀 2937·2021-08-21 14:08
閱讀 1795·2019-08-30 15:56
閱讀 982·2019-08-30 15:52
閱讀 1848·2019-08-29 14:11
閱讀 3568·2019-08-29 11:01