iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >fs-extra实现yarncreatetlist创建示例详解
  • 678
分享到

fs-extra实现yarncreatetlist创建示例详解

fs-extra创建yarncreatetlist项目fs-extra项目创建 2023-01-11 09:01:30 678人浏览 安东尼
摘要

目录1.引言2. 利用fs-extra实现"yarn create tlist"创建项目2.1 模板资源拷贝:2.2 文本文件拷贝:2.3 JSON 文件拷贝:3

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: (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

以上就是fs-extra实现yarn create tlist创建示例详解的详细内容,更多关于fs-extra创建yarn create tlist项目的资料请关注编程网其它相关文章!

--结束END--

本文标题: fs-extra实现yarncreatetlist创建示例详解

本文链接: https://www.lsjlt.com/news/177340.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作