為何大公司都使用Nx ? Monorepo工具五分鐘快速建置

閱讀時間約 4 分鐘
為何大公司都使用Nx ? Monorepo工具五分鐘快速建
未來文章一併更新於此網站 Hogan.B Lab
並且包含多語系 繁體中文英文日文簡體中文

Nx簡介

Nx 一個快速、有效、有相當好延展性的Monorepo工具,並且有以下特色。
1. 支援前端三大框架:Vue、React、Angular
2. 支援後端框架:Express、Nest、Next
3. 為Monorepo框架
4. 支援各類型測試:Cypress、Jest

Nx理念

Nx 與知名程式編輯器Visual Studio Code有著相同的設計哲學,在VSCode之中,即便不下載任何擴充,也可以有相當好的產出。Nx也是相同的,以Nx核心來說,擁有著簡潔、不模糊、明瞭的特性。且以Nx 外掛套件(plugin)來說,可以根據不同的專案去做不同的選擇。
那們接下來就來試試看建立簡單的Nx專案吧!

Nx建置

建立新的Nx環境

讀者可以透過以下指令建立一個新的Nx工作環境
npx create-nx-workspace@latest
當建立完成之後,也需要選擇前置設定,以下也提供幾種Nx前置設定讓讀者參考
Workspace(Typescript)
npx create-nx-workspace --preset=core
React
npx create-nx-workspace --preset=react
Next.js
npx create-nx-workspace --preset=next
Angular
npx create-nx-workspace --preset=angular
FullStack - Angular & Nest.js
npx create-nx-workspace --preset=angular-nest
Backend - Express
npx create-nx-workspace --preset=express

在現有的專案,建立Nx環境

如果一個已存在的專案之中,已有Lerna或是Yarn monorepo,可以透過以下指令來去做建立
npx add-nx-to-monorepo
如果已有一個React App 專案,也可以透過以下指令來去建置Nx
npx cra-to-nx

安裝Nx CLI

如果想要提申開發者的體驗,也建議安裝全域的Nx CLI
npm install -g nx

Nx 專案中,資料夾結構

這邊快速的使用Nx官方文件的範例來做舉例
一個Nx專案大致上會有以下資料夾
myorg/
├── apps/
├── libs/
├── tools/
├── workspace.json
├── nx.json
├── package.json
└── tsconfig.base.json
1. myorg/ 為自己的大型Nx專案名稱
2. /apps/ 會存放各種專案,也是所有專案中主要的進入點。會建議所有此資料夾中的專案應該要越輕量越好,反之檔案比較大的程式且可重複利用的程式碼應該要放在Libraries之中,並且在各個專案中進行載入
3. /libs/ 會包含所有的library 專案。以我自己工作為例,我們會將一些常見的功能模組化並且存放於此,例如:PWA
4. /tools/ 會包含一些常使用的程式碼腳本,也可以將參數放置於此資料夾。例如:資料庫的設定與腳本
5. /workspace.json 會列出在你這個大型Nx專案中的所有小型專案
6. /nx.json 會根據Nx CLI去做配置,也會透過此檔案告知Nx有哪些需要進行快取,或是如何執行
7. /tsconfig.base.json 設定全域TypeScript,並且在每個library 之中建立別名(aliases),協助不管是TypeScript 或是JavaScript 的載入

結語

以上為Nx的快速簡介,說明Nx除了是一個Monorepo框架的工具以外,也支援了哪些東西,另外透過指令來根據當前使用者的情境去做Nx環境建置。
目前任職於外商公司,工作上也使用Nx工具來去管理多個專案。以我個人來說,使用上覺得相當方便,除了可以提升程式碼的重複使用性以外,也有更多的機會與其他團隊的工程師協作與討論。

引用

為什麼會看到廣告
17會員
13Content count
希望能透過「React框架白話文運動」系列文章,利用口語化語表以及簡單的程式碼範例,能讓讀者更明白React的各種應用。 系列文章會講述以下: 1. 了解 ES6 JavaScript 語法 2. 了解 React 的運作原理 3. 了解 React 的狀態管理 4. 使用 React Hook管理狀態並且存取資料
留言0
查看全部
發表第一個留言支持創作者!
大型是一個有點模糊的詞彙,什麼是大型呢? 是100人以上的前端大型開發專案? 還是超過一千個頁面的大型專案?或是跨國部門的前端大型開發專案呢? 為了解決上述的問題,Monorepo前端大型架構就這樣誕生了。
大型是一個有點模糊的詞彙,什麼是大型呢? 是100人以上的前端大型開發專案? 還是超過一千個頁面的大型專案?或是跨國部門的前端大型開發專案呢? 為了解決上述的問題,Monorepo前端大型架構就這樣誕生了。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
Pair programming,譯為「結對編程」,是敏捷軟體開發的一種方式,由兩位軟體工程師同時開發一個程式,簡單來說,原本一個人可以完成的工作,找了兩個人來做,人力成本直接變成兩倍! |本篇報導同步刊登於 科技島 在大量運用 AI 人工智慧的時代,為何外商軟體公司仍積極運用結對編程進行
Thumbnail
大語言模型(LLMs)對於任何對人工智能和自然語言處理感興趣的人來說都是一個令人興奮的領域。 這類模型,如GPT-4, 透過其龐大的數據集和複雜的參數設置, 提供了前所未有的語言理解和生成能力。 那麼,究竟是什麼讓這些模型「大」得如此不同呢?
<老王從房地產再出發> 老王在開旅館失敗後,他不知道該做什麼感到迷茫時候,他的老朋友找到了他。老朋友知道了老王在村裡的人望,勸說他回鄉做房地產。 老王因為不懂房地產所以不感興趣,但老朋友給他講了很多房地產的優勢,並承諾會幫助他。老王最終被老朋友說服了,決定回鄉做房地產。 老王回到了他出生的村莊
Thumbnail
你是否曾思考過,為何有些交易總是鉅額交易?為何這些大額交易者都愛用鉅額交易?而在交易數據中,為何出現交易最大張數都是499張?這其中究竟藏著什麽秘密?這篇文章將為你揭示這些疑問的答案,讓你了解這些交易者的心機和玄機,一起探究這個神秘而又有趣的交易世界!
我又看了看鏡子,不能笑。問:我還是人嗎?和尚說我要殺他,我只是要夢想的慈悲,和尚為什麼不給?我如果對和尚恭恭敬敬,我演化另類佛慈思考,他為何要大怒?
Thumbnail
全球經濟的發展是仰賴各地區或各國經貿交易與相互支援的結果,這與最近國際政治發展非常強調地緣關係與各國天賦資源交換有很大的關係。本文根據近期國際情勢,來討論一項非常重要的策略理論 - 「資源依賴觀點」。
Thumbnail
書裡說道:「熱情是在你專心解決問題或搜尋解答時才會產生出來的」 我以往對熱情看法,也是先找到熱情,接著才願意向下深掘,但後來發現我搞錯了。
📚因果濟世集 🎞片名:【有聲書】為何公司同事都針對我-教您用另外角度處理這樣的問題 📽內文片段: 以下是南部一位師姐自述,來文照登: 影片網址: https://youtu.be/WJNDC8KSVhU 原文網址: 📱您的轉貼,可能從此救了無數處於苦痛的人,使社會更祥和安定。
Thumbnail
受到元宇宙浪潮影響,「Web3.0」成為 2021 年末科技業界的熱議關鍵詞,因此 Web3.0 勢必成為未來新創的發展趨勢,而美國知名企業家諾瓦·斯皮瓦克(Nova Spivack)則主張 Web3.0 除了去中心化的發展,亦包含實現軟體即服務(Software as
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
Pair programming,譯為「結對編程」,是敏捷軟體開發的一種方式,由兩位軟體工程師同時開發一個程式,簡單來說,原本一個人可以完成的工作,找了兩個人來做,人力成本直接變成兩倍! |本篇報導同步刊登於 科技島 在大量運用 AI 人工智慧的時代,為何外商軟體公司仍積極運用結對編程進行
Thumbnail
大語言模型(LLMs)對於任何對人工智能和自然語言處理感興趣的人來說都是一個令人興奮的領域。 這類模型,如GPT-4, 透過其龐大的數據集和複雜的參數設置, 提供了前所未有的語言理解和生成能力。 那麼,究竟是什麼讓這些模型「大」得如此不同呢?
<老王從房地產再出發> 老王在開旅館失敗後,他不知道該做什麼感到迷茫時候,他的老朋友找到了他。老朋友知道了老王在村裡的人望,勸說他回鄉做房地產。 老王因為不懂房地產所以不感興趣,但老朋友給他講了很多房地產的優勢,並承諾會幫助他。老王最終被老朋友說服了,決定回鄉做房地產。 老王回到了他出生的村莊
Thumbnail
你是否曾思考過,為何有些交易總是鉅額交易?為何這些大額交易者都愛用鉅額交易?而在交易數據中,為何出現交易最大張數都是499張?這其中究竟藏著什麽秘密?這篇文章將為你揭示這些疑問的答案,讓你了解這些交易者的心機和玄機,一起探究這個神秘而又有趣的交易世界!
我又看了看鏡子,不能笑。問:我還是人嗎?和尚說我要殺他,我只是要夢想的慈悲,和尚為什麼不給?我如果對和尚恭恭敬敬,我演化另類佛慈思考,他為何要大怒?
Thumbnail
全球經濟的發展是仰賴各地區或各國經貿交易與相互支援的結果,這與最近國際政治發展非常強調地緣關係與各國天賦資源交換有很大的關係。本文根據近期國際情勢,來討論一項非常重要的策略理論 - 「資源依賴觀點」。
Thumbnail
書裡說道:「熱情是在你專心解決問題或搜尋解答時才會產生出來的」 我以往對熱情看法,也是先找到熱情,接著才願意向下深掘,但後來發現我搞錯了。
📚因果濟世集 🎞片名:【有聲書】為何公司同事都針對我-教您用另外角度處理這樣的問題 📽內文片段: 以下是南部一位師姐自述,來文照登: 影片網址: https://youtu.be/WJNDC8KSVhU 原文網址: 📱您的轉貼,可能從此救了無數處於苦痛的人,使社會更祥和安定。
Thumbnail
受到元宇宙浪潮影響,「Web3.0」成為 2021 年末科技業界的熱議關鍵詞,因此 Web3.0 勢必成為未來新創的發展趨勢,而美國知名企業家諾瓦·斯皮瓦克(Nova Spivack)則主張 Web3.0 除了去中心化的發展,亦包含實現軟體即服務(Software as