在本文中,筆者将展示如何在 windows 10 中搭建 node.js 環境。并且,作為檢驗,筆者會在新搭建的環境中運作自己正在努力的一個項目(該項目依賴于 koa, pg, amqplib 等子產品)。
請注意:本文的首要目的是為 node.js 項目搭建開發者環境,而非運作某個項目。筆者随後會介紹如何部署至 azure 平台,但這已經超出了本文的讨論範圍。
在 windows 中用 node.js 進行開發一度是非常麻煩的事,但是現在這一狀況相較于一兩年前有了較大改善。這也是為什麼,在選擇 windows 7 還是 windows 10 作為本文主題之時,我們猶豫不決的原因。
在本文中,我們将盡可能使用最新的工具與應用(并使用其64位版本)。筆者知道在公司環境中這可能無法保證,但保持工具的前衛是很重要的。
本文所有的安裝都會在本機中進行。我不建議在 cygwin 中搭建 node 環境。此外,盡管 virtualbox 是免費的,當我在 windows 機器上運作 linux 虛拟機時,卻總是問題不斷。
首先,安裝 git。使用預設設定,這些設定是相當合理的。
筆者通常會在主目錄下建立一個項目檔案夾。設定時,右鍵單擊該檔案夾,選擇 “git bash here”,再通過<code>git --version</code>指令檢查 git 版本。
這是很好的 bash 環境,你可以建立一個 <code>.bash_profile</code>,在你打開 bash 視窗時執行。此外,這不是 <code>cmd.exe</code> 視窗,你可以檢視一些選項(單擊左上角的圖示)。你可以通過滑鼠中鍵将文本拷貝至視窗(就像在建立的 linux 終端一樣)。
npm 伴随着 node 而來。成功安裝 node.js 之後,包管理器 npm 也應當可用了。
node 包通常會依賴帶有本地代碼的包,是以你必須安裝 visual studio。
node-gpy 是圍繞 python gyp (generate your projects)的一款包裝程式,該工具能為 gcc, xcode 以及 visual studio 生成項目檔案。由于 windows 開發實際上是通過 visual studio 進行的,我們會用其支援 visual studio。
下一步,進入環境變量設定(在系統,進階設定中),并将 <code>gyp_msvs_version=2015</code> 添加到全局變量中,因為下一步是 visual studio 2015 的安裝。
在 gyp 的安裝手冊中還提到了 windows 7 sdks,但是我們在前面已經安裝了 win 8 sdks,是以希望不會用到 win 7 sdks。
fsevents 是可選依賴,且隻能用于 osx 系統;這隻是一個警告——其餘子產品并無問題。
在資料庫端,筆者添加了預設使用者,并建立了一個資料庫。不過,這些都可以在 pgadmin 用戶端輕松完成。
通常,node.js 項目都高度依賴環境變量。
從上面的項目截圖中可以看到,is_interactive 是一個環境變量(env var),這在 linux 與 osx 系統中很容易定義,但是在 windows 中則有一點不同。
在 package.json 的腳本部分,你可以使用安裝在本地的 node 子產品。筆者建議你盡量避免通過 <code>npm -g</code> 指令全局地安裝包。
此外,筆者也不建議在 windows (更精确地說,在跨平台項目中)的腳本部分直接添加環境變量,其實,我們有别的選擇。
最清楚的解決方法是對每一腳本行使用一條指令(如你所見,我們的 <code>npm run lint</code> 指令運作良好)。
不要使用 bash 腳本,cmd 無法處理這些腳本。cmd.ex 支援 <code>&&</code>,是以兩三條指令還行,将一整個 shell 腳本寫做一行就不行了(尤其不應帶有 bash 語言特性)。
為了支援腳本,這是可行的。但是為了運作我們的應用,就需要許多環境變量。
筆者通常會在 .gitignore_global 檔案(在主目錄下,記得用 <code>git config --global core.excludesfile ~/.gitignore_global</code> 進行初始化)中加入 <code>nodemon.*</code>,這樣一來,我的項目中便可以有多個 nodemon json 模闆。
盡管不是非常優雅的解決方案,筆者通常會全局地安裝 nodemon。有時,在開發中直接手動啟動 nodemon,而不是通過适當的運作腳本,更為簡單。
有了上面的 json,現在可以啟動我的微服務了,如下所示:
當然,由于筆者不願監視檔案變化,nodemon 可能不是最佳的僅用于運作腳本的解決方案。對于那些情況,筆者通常會将 nodemon.json 檔案轉化為 nodemon.sh,将每一個環境變量導出至後者。請注意:你可以根據自己的喜好随意命名該檔案,但是不要忘記将其添加至忽略檔案 ——不慎将該檔案推入資源庫會造成很大的麻煩:
之後,筆者可以在指令行中以其為源檔案(源引nodemon.dev.sh)——這樣做是為了我們目前使用的 mingw bash,但是,如果将其轉化為傳統的 bat 檔案,會更為簡單。由于我們的資料庫設定需要幾個環境變量,而筆者不願監視之,這是最快也最粗暴的在本地運作的方法。在雲供應商環境中,筆者會更加合理地設定環境變量。
到此為止,項目順利運作了,就如同在 osx 或 linux 系統中一樣。
以上即為我們簡短的在 windows 10 中配置 node.js 的教程。npm 中的一些子產品可能不支援 windows,但是這一情況正在好轉。windows 擁有許多美觀友好的 gui 工具,visual studio 也是很強大的武器。如果你的團隊願意承擔額外的開銷,這或許是一個可行的選擇。