【问题标题】:Gulp function to create a file with contentsGulp 函数创建一个包含内容的文件
【发布时间】:2021-01-13 17:40:20
【问题描述】:

我对 gulp 很陌生,并试图弄清楚是否可以编写一个 gulp 函数来为我创建一个包含一些内容的文件,并将文件放置在一个位置。但我正在尝试创建与其他文件同名的文件。

这是我目前的设置:

dist
src
---modules
------item1.njk
------item2.njk
---new files

对于模块文件夹中的每个文件,我想创建一个同名但文件内容不同的 .njk 文件。文件内容目前是 HTML,但我想在新创建的文件中编写新代码。

预期输出:

src/modules/item1.njk 有内容:

<p>Hello World!</p>

src/modules/item2.njk 有内容:

<p>Hello again, World!</p>

我希望在使用新内容创建这些文件时使用这些文件名:

src/new files/item1.njk 有内容:

<link rel="stylesheet" href="../../css/styles.css">
{% block content %}
{% include "modules/item1.njk" %}
{% endblock %}

src/new files/item2.njk 有内容:

<link rel="stylesheet" href="../../css/styles.css">
{% block content %}
{% include "modules/item2.njk" %}
{% endblock %}

我怎样才能做到这一点?

【问题讨论】:

    标签: node.js npm gulp


    【解决方案1】:

    我能够使用此答案中的地图流建议,允许我在将文件内容推送到新文件夹位置之前对其进行编辑:

    https://stackoverflow.com/a/38376568/5900050

    我的最终脚本不需要原始文件内容,我想全部替换它:

    .pipe(map(function(file, cb) {
      var fileName = file.basename.toString();
      // --- do any string manipulation here ---
      fileContents = '<link rel="stylesheet" href="../../css/styles.css">\n{% block content %}\n{% include "modules/body/'+fileName+'" %}\n{% endblock %}';
      // ---------------------------------------
      file.contents = new Buffer.from(fileContents);
      cb(null, file);
    }))
    

    【讨论】:

      猜你喜欢
      • 2017-02-17
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 2013-10-28
      相关资源
      最近更新 更多