2016-11-14 53 views
0

我有一個文件夾來重建我的數據庫,並且我需要幫助運行這些文件。我跟着咕嚕的指南,使一個「文件」陣列(如何在使用grunt的文件夾中的所有文件上運行sqlcmd

grunt.initConfig({ 
    logfiles: { 
     filesObject: { 
      files: { 
       'dist/file1.js': ['app/src*.js'] 
      } 
     }, 
     filesArray: { 
      files: [{ 
       src: ['app/src*.js'], 
       dest: 'dist/file1.js' 
      }] 
     } 
    } 
}); 
grunt.registerMultiTask(
    'logfiles', 
    'Log the source-destination mappings in a Grunt multitask', 
    function() { 
     this.files.forEach(function(file) { 
      grunt.log.writeln('File ' + file.dest + ' has the sources ' + file.src); 
     });  
    } 
); 

但我需要用它來轉換以下咕嚕命令轉換爲「的foreach」文件:

rebuildObjects: { 
      cmd: "sqlcmd " 
       + " -S .\\sqlexpress" 
       + " -d " + Database 
       + " -i file 
       + " -v DATABASE_NAME = " + Database 

我麻煩當我registerMultiTask我似乎無法調用rebuildObjects函數,我必須做一個Javascript函數,並且當我註冊任務時,我似乎有麻煩填充文件數組。

我想將其轉換爲像這樣:

rebuildObjects { 
    this.files.forEach(function(file) { 
     file.forEach(function(arrayIndex) { 
      cmd: "sqlcmd " 
       + " -S .\\sqlexpress" 
       + " -d " + Database 
       + " -i file[arrayIndex] 
       + " -v DATABASE_NAME = " + Database 
     }) 
    }) 
} 

我在這裏錯過了什麼?

回答

0

那麼,除非有人有更好的答案,我落得這樣做創建一個子任務「日誌文件」裏我用grunt.file.write(file.dest,file.src)寫入到目標

grunt.registerMultiTask(
    'logfiles', 
    'Log the source-destination mappings in a Grunt multitask', 
    function() { 
     this.files.forEach(function(file) { 
      grunt.file.write(file.dest, file.src); 
     }); 

    } 
); 

我那麼做:

  cmd: 
       function() { 

        var cmdString = "sqlcmd " 
         + " -S .\\sqlexpress" 
         + " -d " + Database; 

        //Create SqlObjects 
        var array = grunt.file.read("gruntLog/sqlObjects.js").split(","); 
        if (array.length > 0 && array[0] !== "") { 
         array.forEach(function(file) { 
          if (file != undefined) 
           cmdString += " -i " + file + ""; 
         }); 
        }; 
        cmdString += " -v DATABASE_NAME = " + Database 
        return cmdString; 
       } 
相關問題