写点什么

利用 fs-extra 实现"yarn create tlist"创建项目

作者:小鑫同学
  • 2022-10-12
    北京
  • 本文字数:1032 字

    阅读完需:约 3 分钟

利用fs-extra实现"yarn create tlist"创建项目

1. 前言

大家好,我是小鑫同学。一位从事过 Android 开发混合开发,现在长期从事前端开发的编程爱好者,我觉得在编程之路上最重要的是知识的分享,所谓三人行必有我师。所以我开始在社区持续输出我所了解到、学习到、工作中遇到的各种编程知识,欢迎有想法、有同感的伙伴加我fe-xiaoxin微信交流~


这一篇我们翻版一下 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: (src, dest) => { return !fileIgnore.find( (f) => f === `${path.parse(src).name}${path.parse(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




如果看完觉得有收获,欢迎点赞、评论、分享支持一下。你的支持和肯定,是我坚持写作的动力~

发布于: 刚刚阅读数: 5
用户头像

小鑫同学

关注

⚡InfoQ签约作者 2018-12-10 加入

还未添加个人简介

评论

发布
暂无评论
利用fs-extra实现"yarn create tlist"创建项目_前端_小鑫同学_InfoQ写作社区