Gruntjs 在Grunt任务中存储状态

Gruntjs 在Grunt任务中存储状态,gruntjs,Gruntjs,我面临着以下有趣的问题: 我想创建一个Grunt任务,该任务在构建/发布过程的各个部分执行 一次调用可能会根据模式对文件进行一些更改,例如在某些文件中替换版本号或Git标记,如#develope 同一版本中的后续调用需要将上述更改“还原”回其原始值 基于以上内容,我需要找到一种方法来跟踪第一次调用中更改的文件,以便在第二步中恢复更改。我不能在第二步中使用模式来避免误报 例如: 启动一个发行版-许多步骤都是其中的一部分,编译、uglify/minify、bump版本号、创建git发行版分支 替

我面临着以下有趣的问题:

  • 我想创建一个Grunt任务,该任务在构建/发布过程的各个部分执行
  • 一次调用可能会根据模式对文件进行一些更改,例如在某些文件中替换版本号或Git标记,如
    #develope
  • 同一版本中的后续调用需要将上述更改“还原”回其原始值
基于以上内容,我需要找到一种方法来跟踪第一次调用中更改的文件,以便在第二步中恢复更改。我不能在第二步中使用模式来避免误报

例如:

  • 启动一个发行版-许多步骤都是其中的一部分,编译、uglify/minify、bump版本号、创建git发行版分支
  • 替换某些依赖项的版本号,例如在
    bower.json
    中-将其从
    #develope
    更改为
    #1.2.3
  • 还有一些步骤,包括Git提交
  • 将上面更改的版本号从
    #1.2.3
    替换回
    #develope
  • 清理释放的附加步骤
  • 最后一步很困难,因为我不想更改在上一步中未更新的任何出现的
    #1.2.3
    。为此,我需要将更改的文件列表存储在某个位置,或者存储在内存中,或者存储在项目根目录中的临时文件中,例如类似于
    .grunt replace
    。在最后一步读取文件后,插件可能会将其删除

    有人在使用这样的Grunt插件吗?你将如何解决这个问题?Grunt是否具有支持上述内容的功能,或者我应该只使用Node.js文件API


    <> P>是否有其他模式来考虑在咕哝调用之间保持某种状态?

    < P>,可以使用文件观察器来保持Grutt进程存活,然后使用事件跟踪状态。

    例如:

    var files = [];
    
    
    module.exports = function(grunt) {
    
      grunt.initConfig({
        watch: {
          files: ['orig.js'],
          tasks: ['my-task']
        }
      });
    
      grunt.loadNpmTasks('grunt-contrib-watch');
    
    
      grunt.registerTask('my-task', function(){
        // Execute some task
      });
    
      grunt.event.on('watch', function(action, filepath, project) {
        //add file
        files.push(filepath);
    
      });
    
      grunt.registerTask('default', ['watch']);
    
    };
    
    然后,您可以跟踪哪些文件已更改,并采取相应的行动

    但我必须补充一点,这有点像黑客。您的构建流不应该是有状态的,您需要能够从头开始构建