如何自動(dòng)化你的開(kāi)發(fā)環(huán)境
如果你是一個(gè)程序員,無(wú)論前端還是后端,無(wú)論業(yè)余還是專(zhuān)業(yè),你可能都會(huì)遇到這樣一個(gè)問(wèn)題:你需要一邊寫(xiě)代碼,一邊運(yùn)行程序,方便查看代碼產(chǎn)生的效果。
舉個(gè)例子吧,當(dāng)你寫(xiě)了一部分 Django views,你會(huì)開(kāi)啟一個(gè)終端運(yùn)行 Django
- cd myapp/rear_end/
- source env/bin/activate
- python manage.py runserver
然后你有寫(xiě)了幾個(gè)前端頁(yè)面,你要啟動(dòng) npm
- cd myapp/front_end/
- npm run dev
現(xiàn)在突然報(bào)了個(gè)錯(cuò),提升你 xxx 包沒(méi)有安裝,于是你又開(kāi)啟了一個(gè)終端,運(yùn)行了 pip
- source env/bin/activate
- pip install xxx
也許你還需要在開(kāi)啟一個(gè)終端,來(lái)管理 npm 的包。
然后你就在這些個(gè)終端里面切換來(lái)切換去,不知道怎么搞得,電腦卡了下,你一怒之下用快捷鍵退出了好幾個(gè)應(yīng)用程序,其中就包括你開(kāi)啟的幾個(gè)終端。
然后你的程序崩潰了。
你也崩潰了,編程太艱難了,現(xiàn)在你不得不手動(dòng)一個(gè)一個(gè)啟動(dòng)這些終端,然后在敲入相應(yīng)的指令。即使你的電腦不卡,也許會(huì)關(guān)機(jī),再開(kāi)機(jī),仍然需要做這些步驟。
現(xiàn)在是時(shí)候?qū)ふ腋玫霓k法了。
也許你知道 tmux (tmux教程[1]) 可以對(duì)一個(gè)終端進(jìn)行分屏,每個(gè)屏里面是一個(gè)獨(dú)立的 terminal session,可以分別執(zhí)行不同的命令,讓我們?cè)谕粋€(gè)窗口看到不同任務(wù)的執(zhí)行情況,比如像這樣:
這樣雖然解決了不同終端間來(lái)回切換的問(wèn)題,但還有一個(gè)問(wèn)題沒(méi)解決,就是如果不小心關(guān)閉了這個(gè)終端,或者電腦崩潰了,如何快速恢復(fù)運(yùn)行好的狀態(tài)?
這就需要 tmuxinator 了,先看下效果圖:
tmuxinator 是一個(gè)處理 tmux 配置的完美工具,自動(dòng)化開(kāi)發(fā)環(huán)境從未如此簡(jiǎn)單。現(xiàn)在讓我們看下如何使用。
1、先安裝 tmuxinator。
當(dāng)然了,安裝前確保你已經(jīng)安裝了 tmux,可以看這個(gè)tmux教程[2]
- gem install tmuxinator
注:
gem 是 Ruby 的一個(gè)包管理器,安裝完 Ruby,你就有了 gem 工具,正如安裝完 Python,你就有了 pip 工具。
2、在項(xiàng)目目錄生成一個(gè)配置文件
假如項(xiàng)目叫 dream,然后在終端執(zhí)行
- tmuxinator new dream
會(huì)生成文件 ~/.config/tmuxinator/dream.yml
3、修改這個(gè)配置文件,加入自己執(zhí)行的命令,如下所示:
- name: dream
- root: ~/dev/mtg-dreamland
- windows:
- - main:
- layout: even-horizontal
- panes:
- - client:
- - cd client
- - git status
- - ls
- - server:
- - cd server
- - git status
- - ls
- - build:
- layout: even-horizontal
- panes:
- - client:
- - cd client
- - npm start
- - server:
- - cd server
- - nodemon server.js
這個(gè)配置文件定義了 2 個(gè)窗口:“main”和“build”。在每一個(gè)中,有 2 個(gè)窗格“客戶端”和“服務(wù)器”。然后只需定義我想在啟動(dòng)時(shí)在每個(gè)窗格中運(yùn)行的命令,我們就完成了!
然后執(zhí)行 tmuxinator start dream,就可以看到所有的命令都會(huì)按照你的編排進(jìn)行執(zhí)行,實(shí)現(xiàn)了開(kāi)發(fā)環(huán)境的自動(dòng)化,如下:
最后
這只是 tmuxinator 的簡(jiǎn)單應(yīng)用,如果要想了解它更多的能力,可以去官方 GitHub[3] 看下。
參考資料
[1]tmux教程: https://www.ruanyifeng.com/blog/2019/10/tmux.html
[2]tmux教程: https://www.ruanyifeng.com/blog/2019/10/tmux.html
[3]官方 GitHub: https://github.com/tmuxinator/tmuxinator#windows
本文轉(zhuǎn)載自微信公眾號(hào)「Python七號(hào)」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Python七號(hào)公眾號(hào)。