Grunt文件名作为变量

时间:2018-01-29 11:26:28

标签: variables gruntjs filenames

也许我的问题听起来很愚蠢,但我在没有找到答案的情况下到处搜索。

我需要存储Grunt在变量中操作的文件名,以便能够在其他任务中重用它。

public void DoSomething<TypeP>(TypeP P)
        {
            if (P is Child1)
            {

            }
            else if(P is Child2)
            {

            }
        }

在此示例中,我重命名附加日期的文件。我需要将生成的文件名存储在一个变量中,以便在其他任务中重用,最后登录到控制台。

需要一些帮助来了解Grunt如何使用文件!

修改 如上所述,我已经用真实值改变了路径。

我的意思是:

  1. 有人在我的文件夹
  2. 中放了一个名为copy: { dist: { files: [{ expand: true, cwd: 'tmp/output/', src: ['*.html'], dest: 'dist', rename: function(dest, src) { var d = new Date(); var mh = d.getMonth() + 1; var dy = d.getDate(); var yr = d.getFullYear(); return dest + "/" + yr + "_" + mh + "_" + dy + "_" + src; } }] } } 的文件
  3. 我通过Grunt在ie中动态重命名。 foo.html
  4. 我需要一个存储全新文件名的变量,或者只是&#34; foo&#34;部分,但不知何故让我能够在其他任务中重用该名称
  5. TNX

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

  1. 在每个Task的外部作用域中声明一个变量,并为其指定一个空数组。例如:

    var cachedFileNames = [];
    
  2. 然后在rename任务的copy函数内,使用Array.push()方法将每个动态生成的文件名存储在cachedDirNames数组中。例如:

    cachedFileNames.push(fileName);
    
  3. cachedFileNames数组中的文件名现在可以在其他任务中重复使用(如下面的自定义logFileNames任务所示)

  4. <强> Gruntfile.js

    以下Gruntfile.js要点展示了上述第1-3点:

    module.exports = function (grunt) {
    
      var cachedFileNames = []; /* 1. Filenames are dynamically
                                      added via the `copy` task.*/
    
    
      grunt.loadNpmTasks('grunt-contrib-copy');
    
      grunt.initConfig({
    
        copy: {
          dist: {
            files: [{
              expand: true,
              cwd: 'tmp/output/',
              src: ['*.html'],
              dest: 'dist',
              rename: function(dest, src) {
                var d = new Date();
                var mh = d.getMonth() + 1;
                var dy = d.getDate();
                var yr = d.getFullYear();
                var fileName = yr + "_" + mh + "_" + dy + "_" + src;
    
                cachedFileNames.push(fileName); // 2. Cache each new filename.
    
                return dest + "/" + fileName;
              }
            }]
          }
        }
      });
    
      // 3. Custom Task to demonstrate the `cachedFileNames`
      //    array can be accessed via another task.
      grunt.registerTask('logFileNames', function() {
        cachedFileNames.forEach(function(fileName) {
          grunt.log.writeln(fileName);
        })
      })
    
      grunt.registerTask('default', [ 'copy', 'logFileNames' ]);
    };