fs-extra实现yarn create tlist创建示例详解

 更新时间:2023年01月11日 08:51:00   作者:小鑫同学  
这篇文章主要为大家介绍了fs-extra实现yarn create tlist创建示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

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项目的资料请关注脚本之家其它相关文章!

相关文章

  • 前端算法题解 leetcode50-Pow(x, n)

    前端算法题解 leetcode50-Pow(x, n)

    这篇文章主要为大家介绍了前端算法题解 leetcode50-Pow(x, n)示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • autojs绘画实现六边形示例详解

    autojs绘画实现六边形示例详解

    这篇文章主要为大家介绍了autojs绘画实现六边形示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 微信小程序 教程之模板

    微信小程序 教程之模板

    这篇文章主要介绍了微信小程序 模板的相关资料,并附实例代码,需要的朋友可以参考下
    2016-10-10
  • JavaScript本地存储全面解析

    JavaScript本地存储全面解析

    这篇文章主要为大家介绍了JavaScript本地存储的全面解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 使用JavaScript破解web

    使用JavaScript破解web

    今天小编就为大家分享一篇关于使用JavaScript破解web的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09
  • 微信小程序中使用javascript 回调函数

    微信小程序中使用javascript 回调函数

    这篇文章主要介绍了微信小程序中使用javascript 回调函数的相关资料,需要的朋友可以参考下
    2017-05-05
  • 微信小程序 modal组件详细介绍

    微信小程序 modal组件详细介绍

    这篇文章主要介绍了微信小程序 modal组件详细介绍的相关资料,需要的朋友可以参考下
    2016-09-09
  • 详解如何发布TypeScript编写的npm包

    详解如何发布TypeScript编写的npm包

    这篇文章主要介绍了如何发布TypeScript编写的npm包实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • three.js-结合dat.gui实现界面可视化修改及调试详解

    three.js-结合dat.gui实现界面可视化修改及调试详解

    这篇文章主要为大家介绍了three.js-结合dat.gui实现界面可视化修改及调试详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 微信小程序 action-sheet底部菜单详解

    微信小程序 action-sheet底部菜单详解

    这篇文章主要介绍了微信小程序 action-sheet底部菜单详解的相关资料,并附实例代码,需要的朋友可以参考下
    2016-10-10

最新评论