fs-extra实现yarncreatetlist创建示例详解
1.引言
这一篇我们翻版一下 create-vite
,将以后整理的项目模板集中管理,方便在需要的时候快速创建使用~
2. 利用fs-extra实现"yarn create tlist"创建项目
资源拷贝我们采用fs-extra
模块实现~
2.1 模板资源拷贝:
在模板资源拷贝时部分文件是需要我们特殊处理的,所以这部分文件在资源拷贝时就暂时过滤掉,fs-extra
模块中的copySync
就提供了过滤文件的功能~
路径匹配的时候我们可以使用path
模块中的parse
函数转为对象后可以更好的操作~
export const fileIgnore = ['package.json', '_gitignore'];
fsExtra.copySync(templateDir, targetDir, {
filter: (class="lazy" data-src, dest) => {
return !fileIgnore.find(
(f) => f === `${path.parse(class="lazy" data-src).name}${path.parse(class="lazy" data-src).ext}`
);
},
});
2.2 文本文件拷贝:
_gitignore
文件需要再输出时进行重命名操作,但没有找到可以直接实现重命名的函数,所以就通过分别读写两步实现。普通文本文件使用fs-extra
模块中的readFileSync
读取,在输出到新文件名的文件中~
const gitignoreInfo = fsExtra.readFileSync(
path.resolve(templateDir, "_gitignore")
);
fsExtra.outputFile(path.join(root, ".gitignore"), gitignoreInfo);
2.3 JSON 文件拷贝:
package.json
读取后我们需要重写内容后再输出,fs-extra
模块中的readJsonSync
函数可以直接读取为 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"的主要逻辑除去参数的收集以外就是模板的拷贝两块了,这里通过利用fs-extra
实现了模板拷贝,fs-extra
函数的支持还是挺不错的,拷贝文件还考虑到了支持过滤的功能,挺不错~
本文项目已推送至GitHub:
git clone git@github.com:OSpoon/create-tlist.git
以上就是fs-extra实现yarn create tlist创建示例详解的详细内容,更多关于fs-extra创建yarn create tlist项目的资料请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341