Javascript 节点createWriteStream Grunt包

Javascript 节点createWriteStream Grunt包,javascript,node.js,gruntjs,Javascript,Node.js,Gruntjs,我已经开始尝试使用node来更新文件末尾的html文件内容,这是我Grunt文件中的一个模板文件。我遇到的问题是: 我使用此代码将文件末尾更新为package.json版本: appVersion=fs.createWriteStream'/src/file.html',{'flags':'a'} appVersion.writegrunt.file.readJSON'package.json'.version 唯一的问题是,当我运行grunt时,它会在每次运行grunt时将其添加到文件的末尾。

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

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

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

appVersion.writegrunt.file.readJSON'package.json'.version

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

谢谢你在这方面的帮助


更新-这是伴随而来的。我想知道并试图了解使用+作为标志是否会让我删除版本,然后再次附加它?

与其在源文件中反复替换版本,不如在源文件中使用一个标记,并将该文件处理到其目标,用实际值替换标记

即使用grunt模板:

  grunt.config('copy.myhtml', {
    options: {
      processContent: function (content, srcpath) {
        return grunt.template.process(content);
      }
    },
    files: [{src: "src/index.html", dest: "output/index.html"}]
  });
您的html源文件如下所示:

<html>
<body>
<%= pkg.version %>
</body>
</html>
现在,当您要将html文件复制到其最终目的地时,请使用grunt模板处理其内容:

  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文件中的包版本


希望能有所帮助。

谢谢。如果我不能使用上述选项,我可能会使用此选项。我想知道如果我用+来代替,它会允许我删除然后再写吗?如果没有,我将使用我以前使用的grunt模板。使用a+不会改变你的问题-它只是意味着你的文件将被打开以进行读取和附加。您要做的是:读取其内容,然后解析内容,然后检测旧版本所在的部分,然后将其替换为新版本,然后再次写入文件。。。a/a+模式不是魔术;