节点createWriteStream Grunt包

时间:2014-01-13 17:32:25

标签: javascript node.js gruntjs

我已经开始涉足尝试使用node来更新文件末尾的html文件内容 - 它是我的Grunt文件中的模板文件。我遇到的问题:

  1. 我使用此代码使用package.json版本更新文件末尾:

    appVersion = fs.createWriteStream('./src/file.html', {'flags' : 'a'});

    appVersion.write(grunt.file.readJSON('package.json').version);

  2. 唯一的问题是当我运行grunt时,每次运行grunt时它都会将它添加到文件的末尾。有没有办法在我再次编写之前删除版本?

    感谢您对此提供任何帮助。

    更新 - 这与Write in a text file without overwriting in fs node js一致。我想知道是否正在使用" a +"对于该标志,我会删除该版本,然后再次附加它?

1 个答案:

答案 0 :(得分:0)

我建议您不要在源文件中反复替换版本,而是建议在源文件中使用“标记”并将该文件处理到目标,并用实际值替换标记。

那是(使用grunt-template):

让你的html源文件:

<html>
<body>
<%= pkg.version %>
</body>
</html>

在你的gruntfile配置中:

grunt.initConfig({pkg: grunt.file.readJSON('package.json')}

现在,当您要将html文件复制到其最终目的地时,请使用grunt-template处理其内容:

  grunt.config('copy.myhtml', {
    options: {
      processContent: function (content, srcpath) {
        return grunt.template.process(content);
      }
    },
    files: [{src: "src/index.html", dest: "output/index.html"}]
  });

现在调用grunt copy:myhtml,应该这样做。

我知道这并不是你想到的,但它可能是一个更好的工作流程,更符合工具的理念(例如:grunt),结果就是你想要的(包装版本在html文件)。

希望有所帮助。