fs-extra實現(xiàn)yarn?create?tlist創(chuàng)建示例詳解
1.引言
這一篇我們翻版一下 create-vite
,將以后整理的項目模板集中管理,方便在需要的時候快速創(chuàng)建使用~
2. 利用fs-extra實現(xiàn)"yarn create tlist"創(chuàng)建項目
資源拷貝我們采用fs-extra
模塊實現(xiàn)~
2.1 模板資源拷貝:
在模板資源拷貝時部分文件是需要我們特殊處理的,所以這部分文件在資源拷貝時就暫時過濾掉,fs-extra
模塊中的copySync
就提供了過濾文件的功能~
路徑匹配的時候我們可以使用path
模塊中的parse
函數(shù)轉為對象后可以更好的操作~
export const fileIgnore = ['package.json', '_gitignore']; fsExtra.copySync(templateDir, targetDir, { filter: (src, dest) => { return !fileIgnore.find( (f) => f === `${path.parse(src).name}${path.parse(src).ext}` ); }, });
2.2 文本文件拷貝:
_gitignore
文件需要再輸出時進行重命名操作,但沒有找到可以直接實現(xiàn)重命名的函數(shù),所以就通過分別讀寫兩步實現(xiàn)。普通文本文件使用fs-extra
模塊中的readFileSync
讀取,在輸出到新文件名的文件中~
const gitignoreInfo = fsExtra.readFileSync( path.resolve(templateDir, "_gitignore") ); fsExtra.outputFile(path.join(root, ".gitignore"), gitignoreInfo);
2.3 JSON 文件拷貝:
package.json
讀取后我們需要重寫內(nèi)容后再輸出,fs-extra
模塊中的readJsonSync
函數(shù)可以直接讀取為 JSON 對象,我們在修改對象后再次通過outputJSONSync
輸出 JSON 對象即可,在outputJSONSync
提供的選項中指定spaces=2
輸出非在一行的 JSON 文件~
const pkg = fsExtra.readJsonSync(path.resolve(templateDir, "package.json")); pkg.name = packageName || getProjectName(); fsExtra.outputJSONSync(path.join(root, "package.json"), pkg, { spaces: 2, });
3. 總結
"yarn create tlist"的主要邏輯除去參數(shù)的收集以外就是模板的拷貝兩塊了,這里通過利用fs-extra
實現(xiàn)了模板拷貝,fs-extra
函數(shù)的支持還是挺不錯的,拷貝文件還考慮到了支持過濾的功能,挺不錯~
本文項目已推送至GitHub:
git clone git@github.com:OSpoon/create-tlist.git
以上就是fs-extra實現(xiàn)yarn create tlist創(chuàng)建示例詳解的詳細內(nèi)容,更多關于fs-extra創(chuàng)建yarn create tlist項目的資料請關注腳本之家其它相關文章!
相關文章
基于JavaScript代碼實現(xiàn)微信掃一掃下載APP
有很多人在做微信的掃一掃下載。但是在微信更新之后微信將該功能給禁止掉了,也不能說是全面禁止吧,因為騰訊、微信是一家嘛,通過應用寶審核的應用好像還是可以通過掃一掃直接下載的,下面通過本篇文章給大家介紹微信掃一掃下載app的代碼片段,感興趣的朋友一起看看吧2015-12-12