Node.js .sh scripts Manager

命令行也有苦惱

不知身爲前端er的你是否是還在使用 Windows 開發?反正我是。使用 Git?使用 npm scripts?好吧,命令行是少不了的吧?想必不少同窗和我同樣,使用 Git Bash 做爲命令行終端吧。html

但是每次都要敲,累不累?想一想一次簡單的 Git 提交須要幾個步驟?前端

$ git add -A
$ git commit -m 'commit'
$ git push

圖簡便的你可能會在 package.json 中這樣配置:react

{
    // ...
    "scripts": {
       // ...
       "push": "git add -A && git commit -m 'commit' && git push"
    }
}
// ...

而後再敲 npm run push。啊啊心好累。android

用過 browser-sync cli 嗎?反正爲了圖簡便,我是常常用的。敲過最變態的是下面這一行:git

browser-sync start --server --files "dist/*" --index "dist/index.html" --open "external" --reload-debounce --no-notify

.bat/.sh 的故事

敲過一次以後,發誓不再這麼玩了。索性在桌面保存了一個 bs.bat 文件,把上面的內容放進去。每次都從桌面 copy 到工做目錄中去,雙擊完事。github

後來玩 github 稍微勤了一些,commit、pull 的時候,命令行敲起來當然爽得不行,但是累啊。在上一家公司作 react-native 應用的時候,對 react-native run start cd android && ./gradlew assembleRelease 也是深惡痛絕。最後無不以 bat、sh文件收尾。web

nshm 的由來

前些時間接觸到一個管理 npm registry 的 package,叫 nrm,用起來真是爽。nrm use taobao nrm add xx url簡單就能解決問題。這讓我萌生一個想法:能不能不要每次都從桌面 copy 那些簡單的腳本啊,來個簡單的命令行本身把文件寫目錄不就 OK 了嗎?npm

醞釀了一段時間。遲遲不願動手。今天中午下樓抽菸,靈機一動,思路來了,花了半下午時間,邊寫邊重構,最終作出來一個略嫌簡陋但還能湊合用的工具,名之曰 「nshm」,取 「Node.js .sh scripts Manager」 的縮寫,放在 Github 上了,https://github.com/AngusFu/nshmjson

使用起來很簡單,看文檔就行。react-native

安裝

$ npm install nshm -g

$ nshm <command> [args...]

添加一條自定義命令

$ nshm add <command_name> -[t|f] [text|path]

# add file content
$ nshm add commit --file ./my-commit.sh
# or
$ nshm add commit -f ./my-commit.sh

# add text content
$ nshm add pull --text "git pull"
# or
$ nshm add pull -t "git pull"

多個命令合併成一條命令

$ nshm co <command_name> [command|text] [command|text] [command|text] [...]

$ nshm co git commit pull "git status"

刪除緩存的命令

$ nshm rm <command_name> <command_name> <...> 

$ nshm rm commit pull git

清除全部緩存的命令

$ nshm clean

列出現有的命令

# view all names
$ nshm ls

# view all details
$ nshm ls -a

Example 01

$ nshm add add -t "git add -A"
$ nshm add commit -t "git commit -m 'push'"
$ nshm add pull -t "git push"

$ nshm co git add commit pull

# init my directory
# then we'll get `add.sh` `commit.sh` `pull.sh`
$ nshm git

Example 02

# browserSync cli 
# here we use `${}` as placeholders
# for necessary params
$ nshm add bs -t "browser-sync start --server --files \"${files}\" --index \"${index}\" --open \"external\" --reload-debounce --no-notify"

# now we get the `bs.sh` file under our working directory
$ nshm bs --file '**' --index 'index.html'

結尾

工具默認自帶了 Git 相關的 commit pull 及集成二者的 git 命令,還有上面提到的 browser-sync 的命令(簡稱做bs)。也能夠使用 nshm add 的形式本身添加。

微不足道的工具,自娛自樂一下,雖然顯得 low 了點,也能解決本身的一點問題。

That's all。

PS: 今晚開始看 WebRTC 的內容,小有收穫,學習筆記會放在 https://github.com/AngusFu/webRTC-demo 這裏,不是對書上 demo 的簡單重複,而是按照本身的理解來記錄。學習的生活撿起來!

相關文章
相關標籤/搜索