【问题标题】:How to use a method multiple times in one?如何在一个方法中多次使用?
【发布时间】:2022-01-07 13:31:21
【问题描述】:

目标:

所以我将 Eleventy 用作 SSG,并希望在 Eleventy 进行构建或站点生成之前创建多个文件夹并将一些文件复制到这些文件夹中。

JSON 文件用于站点标题(文件夹名称)数组。

我选择使用 fs-extra 模块而不是 Node.js fs 模块。

.eleventy.js 内部(配置文件):

    const fse = require('fs-extra');
    const arrayFromJSON = require('./_data/sites.json');
    const arrayTitles = arrayFromJSON.titles;
    
      eleventyConfig.on("beforeBuild", () => {
  // Create site folders and copy layout and frontmatter data to the folders
    arrayTitles.forEach(element => 
      fse.copySync(`sitesource/index.njk`, `src/_sites/${element}/${element}.njk`, { recursive: true }));
    arrayTitles.forEach(element => 
      fse.copySync(`sitesource/fm.11tydata.js`, `src/_sites/${element}/${element}.11tydata.js`, { recursive: true }));
  });

我一直在寻找将这两个操作合二为一的想法和示例,其中只需调用一次 arrayTitles.forEach。但是我没找到。

这可能吗,有没有人提出改进此代码的建议?

【问题讨论】:

    标签: javascript node.js function methods eleventy


    【解决方案1】:

    我可能会感到困惑,但为什么不简单地使用一个 forEach?

    eleventyConfig.on("beforeBuild", () => {
        // Create site folders and copy layout and frontmatter data to the folders
        arrayTitles.forEach(element => 
          fse.copySync(`sitesource/index.njk`, `src/_sites/${element}/${element}.njk`, { recursive: true });
          fse.copySync(`sitesource/fm.11tydata.js`, `src/_sites/${element}/${element}.11tydata.js`, { recursive: true });
        );
      });
    

    【讨论】:

    • 是的,我已经尝试过了……以同样的方式工作。但最后它给了我问题。第一次构建没有问题,但是随着重建它给出了问题,陷入了无限的重建循环。解决了使用 package.json 中的 NPM 运行此脚本的问题。
    猜你喜欢
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    相关资源
    最近更新 更多