翻譯:瘋狂的技術宅 原文:https://medium.com/dailyjs/how-i-automated-my-job-with-node-js-94bf4e423017
翻譯:瘋狂的技術宅
我們在工作中經常會進行很多繁瑣的任務:更新配置文件,複製和粘貼文件,更新 Jira 標籤等。
慢慢的花在這些任務上的時間會越來越多。我在 2016 年時在一家網路遊戲公司工作時,類似的工作很多。當時我在為遊戲構建可配置的模板,這項工作也許很有價值,但是由於要重新設置皮膚,我必須把大約70%的時間消耗在製作那些遊戲的副本、模板和部署等工作上。
公司 reskin 的定義是使用相同的遊戲機制,屏幕和元素的定位,但改變了視覺美學,??如顏色和資源等(譯者吐槽:實際上就是給遊戲換皮。。。)。所以像 「石頭剪子布」 這樣的簡單遊戲,我們將創建一個有如下基本資源的模板。
但是當我們創建一個 reskin 時,會使用不同的資源,同時還要保證遊戲仍然可以正常工作。如果你玩過像「糖果傳奇」 或「瘋狂的小鳥」這樣的遊戲,會發現它們通常會在萬聖節,聖誕節或復活節發布很多風格類似的遊戲。從商業角度來看這很有意義。現在......讓我們回到實施過程。我們的每個遊戲都共享相同的 JavaScript 文件,並載入到具有不同內容和資源路徑的 JSON 文件中。結果會怎樣?
實際上我和其他開發人員的時間表上已經積壓了大量的任務,我的第一個想法就是「很多工作都可以進行自動化處理」。每當我創建一個新遊戲時,都必須執行以下步驟:
相比較而言,這比單純的開發工作多了許多管理上的事情。我以前曾經接觸過 Bash 腳本,並通過它來創建一些腳本以減少工作量。其中一個腳本更新了模板並創建了一個新分支,另一個腳本則執行提交並將項目合併到演示和生產環境。
通常手動設置項目需要三到十分鐘,部署可能需要五到十分鐘。但是根據遊戲的複雜程度,也可能需要十分鐘到半天。儘管腳本能有所幫助,但仍需要大量的時間用於更新內容或追查丟失的信息。
通過編寫代碼來縮短時間是遠遠不夠的。我們還需要思考優化工作流程的好方法,以便可以更多地去依賴腳本。比如將內容從 word 文檔中移出,並轉移到 Jira 標籤中,再將其分解為相關的自定義欄位。設計人員不是發送公共驅動器上資源所在位置的鏈接,而是去設置一個內容交付網路(CDN)存儲庫,其中包含對資源的暫存和發布到生產環境的 URL。
這些事情可能需要一段時間才能實施,但我們的流程確實會隨著時間的推移而得到改善。我對我們的項目管理工具 Jira 的 API 進行了一些研究,並對正在處理的 Jira 標記做了一些請求,得到了大量有價值的數據,所以我決定將這些請求集成到了自己的 Bash 腳本中,以便能夠從 Jira 標記中讀到值,並在完成後發布評論和通知相關人員。
Bash 腳本很好,但如果有人在 Windows 機器上工作,它們就無法運行了。在做了一些挖掘之後,我決定用 JavaScript 將整個過程包裝成一個定製的構建工具。我給這個工具取名為Mason,它將會改變一切。
當你在終端中使用 Git 時(我假設你在這樣做),會發現它有一個非常友好的命令行界面。如果你拼寫錯誤或輸入錯誤的命令,它會友好地對其認為你想要輸入的內容提出建議。一個名為 commander的庫應能夠提供相同的功能,它是我使用的眾多庫之一。
請參考下面這個簡化的代碼示例。它正在對命令行界面(CLI)程序進行引導。
使用 npm,你可以從 package.json 運行一個鏈接,它將會創建一個全局別名。
npm link
它將為我提供一個可以調用的命令,被稱為 mason。所以每當我在終端中調用 mason 時,它將運行 mason.js 腳本。所有任務都屬於一個名為 mason 的綜合命令,我每天都用它來構建遊戲,節省的時間真的是......令人難以置信。
你可以在下面看到:我將 Jira 標籤編號作為參數傳給命令。這將會使用 curl 去請求 Jira API ,並獲取更新遊戲所需的所有信息。然後它將繼續構建和部署項目。最後我會發表評論並標記相關人員和設計師,讓他們知道工作已經完成。
$ mason create GS-234 ... calling Jira API ... OK! got values! ... creating a new branch from master called GS-234 ... updating templates repository ... copying from template pick-from-three ... injecting values into config JSON ... building project ... deploying game ... Perfect! Here is the live link http://www.fake-studio.com/game/fire-water-earth ... Posted comment Hey [~ben.smith], this has been released. Does the design look okay? [~jamie.lane] on Jira.
依靠這些我們就完成了關鍵的步驟!我對整個項目感到非常滿意。
歡迎關注公眾號:【前端先鋒】,後台回復」2「,免費獲取更多以上視頻課程。