高效 Node.js 開發環境之命令行工具篇

jopen 9年前發布 | 29K 次閱讀 Node.js Node.js 開發
 

高效 Node.js 開發環境之命令行工具篇

追求更高的效率是碼農不斷的追求。選擇合適的工具,合理搭配使用,既能提高一部分開發效率,又能改善寫代碼時的心情。本文介紹筆者自己平時使用的部分工具與配置,希望拋磚引玉,對大家有所幫助。每種工具或配置后都有擴展閱讀的鏈接,方便大家做更深入的了解。

寫在前面的操作系統選擇

作為一個 Node.js 開發者,如果你還在用 Windows,那你一定是上輩子折翼的天使……(大霧)。Node.js 應用的開發過程需要用到大量的命令行操作,偏偏 Windows 對命令行工具的支持是最薄弱的,并且有相當一部分模塊在 Windows 上無法編譯通過。OS X 的內核 Darwin 是 Unix 的一個變種,基本兼容 POSIX 規范,與 Linux 一樣對命令行工具有天然的良好支持,再加上優秀的 GUI,不選 OS X 選什么?什么,你說你要用 Linux?也行啊,只是本文部分優秀 GUI 工具與你無緣了:) 什么?!你一定要用 Windows ?!好吧,也有兩件如意兵器在后面。

終端/命令行工具

  • iTerm2: OS X 已經自帶了Terminal.app,但如果你每天會花一個小時以上的時間面對終端軟件, iTerm2 無疑是更佳的選擇。除了 session 分屏、便攜的快捷鍵、高亮搜索結果之類稱手的功能,iTerm2 的強大更體現在:
    • Instant Replay:實時「重放」當前 session 之前的狀態,簡直是終端里的時間機器。
    • Password Manager:是否已經厭倦了在 sudo 或者 ssh 遠程主機時一遍又一遍輸入密碼? Password Manager 可以幫你擺脫這些重復勞動。當然,免輸密碼的辦法很多,不過這是另一個話題,以后可以再聊。
    • Captured Output:在幾百幾千行的 stdout/stderr 中找感興趣的信息實在是件費眼睛費腦子的事情。Captured Output 可以直接捕獲符合你定義的正則表達式的輸入并將其收集起來,省去不少力氣。
      高效 Node.js 開發環境之命令行工具篇
  • zsh: 曾經有一位哲學家(我)說過,「bash is good, but zsh is way better!」 zsh 基本兼容 bash 的語法(新手直接cat ~/.bashrc >> ~/.zshrc基本上是用起來的,雖然不是 good practise),并具有以下強大的功能:
    • 基于上下文的自動補全
    • 全局別名
    • 命令拼寫檢查與提示
    • 命令歷史管理

擴展閱讀 No, Really. Use Zsh: http://fendrich.se/blog/2012/09/28/no/

  • oh-my-zsh 是 zsh 的主題與插件集合,給 zsh 錦上添花。有了 oh-my-zsh,輕輕松松更改 zsh 的提示符主題,或者增加第三方命令行工具的自動補全。我啟用的 oh-my-zsh 插件有 git、git-extras、tig、nvm、npm、osx、brew、 autojump、 sudo、 history-substring-search、 docker,看官們可以酌情自選。

擴展閱讀 Become A Command-Line Power User With Oh-My-ZSH And Z http://www.smashingmagazine.com/2015/07/become-command-line-power-user-oh-my-zsh-z/

高效 Node.js 開發環境之命令行工具篇

  • homebrew:不要再羨慕 Debian/Ubuntu 用戶們有 apt-get 或者 CentOS/RHEL 用戶們有 yum。有了 homebrew,OS X 下的包管理實在太方便了!需要一個 MySQL Server?brew install mysql。需要知道有哪些 git 相關的 package?brew search git。homebrew 不僅僅可以安裝命令行工具,連 GUI 應用,也可以用它來安裝更新。brew cask一下,你就知道。

擴展閱讀 Homebrew Demystified: OS X’s Ultimate Package Manager: http://computers.tutsplus.com/tutorials/homebrew-demystified-os-xs-ultimate-package-manager--mac-44884

  • git-extras:git-extras 提供了一系列 git 子命令擴展,一步完成好幾個 git 原生命令或者外部命令才能搞定的操作。比如git changelog可快速根據 commit log 生成 Changelog,git release可生成相應版本 tag,git pr可以直接在 GitHub 上創建一條 Pull Request,簡直是一把 git 瑞士軍刀。 git-extras 可以作為 oh-my-zsh 的插件直接在~/.zshrc中啟用,也可以用 homebrew 執行brew install git-extras安裝。
  • tig:是不是覺得 tig 這個名字有些眼熟?嗯,其實就是 git 三個字母顛倒一下順序。tig 是一個「基于文本」的 git 「圖形界面」,有點兒拗口,且來看圖: 高效 Node.js 開發環境之命令行工具篇 tig 可以在一個「文本圖形界面」中使用 log/tree/diff/branch/refs/stage/stash 等操作,異常方便。

擴展閱讀 The Tig Manual: http://jonas.nitro.dk/tig/manual.html

  • nvm/n:如果你需要在 Node.js 開發過程中經常切換 Node.js 包的版本,nvm/n 顯然是讓這個過程輕松太多的不二選擇。關于 nvm/n 的比較與用法,之前有文章已經詳細介紹過。但如果你是一個 nvm 的重度用戶,你會發現每次用 nvm 來切換一個全新版本的 Node.js,需要用nvm copy-packages重新安裝一次之前安裝的所有全局模塊,簡直讓人頭疼。其實也有個小技巧解決:
    1. 編輯~/.npmrc,添加一行prefix=~/.npm-global
    2. 編輯~/.zshrc或者~/.bashrc,在末尾添加一行export PATH=~/.npm-global/bin:$PATH
    3. 執行source ~/.zshrc或者source ~/.bashrc

注:新版本的 nvm 考慮到一些需要編譯的模塊在不同 V8 版本下的問題,禁止 prefix 的用法。解決辦法也很簡單,刪除 nvm.sh 中這三行即可:

if ! nvm_die_on_prefix "$NVM_DELETE_PREFIX" "$NVM_USE_CMD"; then return 11 fi 

這樣無論哪個版本的 node 安裝全局模塊時都會安裝到~/.npm-global,避免在切換版本后需要重新安裝。

Windows 用戶尊貴專場

  • cmder: 雖然 Windows 下沒有 iTerm2 這樣的神器,但是還是有少數終端軟件在努力著,cmder 就是其中一例。簡陋的 cmd.exe 與 cmder 相比,簡直一個地下一個天上。 高效 Node.js 開發環境之命令行工具篇
  • Chocolatey:這是我唯一能找到的 Windows 下的第三方包管理工具(Windows 10 Powershell 附帶的 OneGet 不,正如它的自述,”Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind.” 類似 brew cask,Chocolatey 也可以安裝 GUI 應用程序。

擴展閱讀 Chocolatey official site: https://chocolatey.org/

咳,簡短的介紹到此。歡大家迎拍磚,歡迎建議更棒的工具!

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!