這篇系列文章將分三大主軸,首先介紹模組化的基本概念跟相關 Pattern,第二個範疇是分析 Open Source 的模組設計,並打照自己的模組,最後會以怎麼管理模組與相關工具的使用介紹做結尾。
此篇幅是 Modern Web 2019 演講主題「初探 Javascript 模組化開發 」的延伸,當初礙於議程只有 40 分鐘,刪減了非常多內容,透過 IT 鐵人賽的機會,讓這些內容可以重現天日。
Module Loader 通常是指某個函式庫,例如 RequireJS 和 SystemJS,我們可以透過 Module Loader 來加載使用 AMD 或...
模組一開始怎麼界定模組範圍是最困難的,最簡單的方式就是先盡可能切出最小介面,能不公開的就先都不要公開,等到有確定的需求後,再開出新的 API。 以小模組來說,模...
前一篇我們有提到 koa-router 提供的建構子是可以帶值的,常見用途就是讓使用者可以彈性的覆蓋預設參數,這其實是非常常見的設計,你可以在很多模組都可以看到...
當你要打照自己的模組時,除了要注意設計自己的模組之外,一定也會使用到其他外部模組,在選用模組時,需要考量未來使用你設計的模組的使用者執行環境是哪裡。 如果你的執...
如果模組越來越大的時候,就必須要開始思考怎麼切割模組了,在切模組的過程中,我們將遇到一些挑戰如下: 那原始碼怎麼辦?repo 也要切開來嗎? 版號管理呢? 切...
管理模組化的原始碼的兩種策略 Monorepo 和 Polyrepo Monorepo Monorepo 是指在一個 repo 中,管理多個模組。 截至...
在前面的篇幅,我們有提到如果希望能再不公開前,讓子模組互相使用到最新的更動,可以透過 npm link 的方式,將子模組彼此之前連結起來。 但是如果模組很多的話...
lerna init 初始化,並選擇版號管理模式 fixed 模式 lerna init { "app-api-server": &q...
自動產生 changelog lerna.js 具有自動產生 changelog 的功能,運作邏輯說起來也沒有太神奇,基本上就是你在做 git commit 時...
lerna bootstrap 安裝所有相依的模組,並且將相依的模組連接 (linking) 起來。 lerna bootstrap lerna publis...