為什么要封裝一個實用函數的 npm 包?
當你連續寫了多個 Node 應用, 都想要 console 漂亮一點, 你可能會像下面這樣封裝一個函數
import chalk from "chalk";function noop(msg: string): string { return msg}function log(fn: Function): (msg: string) => void { return (msg: string): void => { console.log(fn(msg)); };}export default { success: log(chalk.green), error: log(chalk.red), warn: log(chalk.yellow), info: log(chalk.cyan), log: log(noop)};
調用方式
import log from './log'log.success("hello green message!")log.error("hello red message!")log.warn("hello yellow message!")log.info("hello cyan message!")log.log("hello normal message!")
慢慢的發現每個項目都需要這么一個 log 文件, 是的! 我們此時可以考慮把這些常用的函數封裝集合到一個 npm 包里面了!
需要注意的事項有哪些
單元測試
考慮到代碼量的增加以及貢獻者的增加事先加入單元測試是很有必要的
持續集成
Travis CI 提供的是持續集成服務(Continuous Integration,簡稱 CI)。它綁定 Github 上面的項目,只要有新的代碼,就會自動抓取。然后,提供一個運行環境,執行測試,完成構建,還能部署到服務器。
代碼層面
擴展開放, 修改關閉的設計原則
當 src 目錄新增一個實用函數文件, index.ts 能夠自動抓取然后掛載在 module.export 上
通過 getter 巧妙的實現懶加載導出的功能
Object.defineProperty(module.export, 'log', { configurable: false, enumerable: true, get: () => require('./log')});
項目地址
https://github.com/xiaoxiaojx/enhanced 歡迎 Star 和 Pr 和 在項目中使用~
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答