2013-10-18 240 views
4

我試圖自動執行我的測試,並且想要爲src文件夾上創建的任何javascript自動創建測試文件。這是我的文件夾結構的細分。當grunt中不存在文件/文件夾時創建文件/文件夾

js 
--src 
    --sum.js 
    --subtract.js 
    --calculator.js 
    --innerFolder 
    --multiply.js 
    --divide.js 
--specs 

所以從上面的文件夾結構,我想要做的就是創建所有的文件夾結構,並在我的規格文件,這樣才如果在目標文件夾中的文件不存在: -

js 
--src 
    --sum.js 
    --subtract.js 
    --calculator.js 
    --innerFolder 
    --multiply.js 
    --divide.js 
--specs 
    --sumSpec.js 
    --subtractSpec.js 
    --calculator.js 
    --innerFolder 
    --multiplySpec.js 
    --divideSpec.js 

我解決這個方法是通過觀看所有文件/上src文件夾做: -

watch:{ 
    src : { 
    files: ['src/**/*.*'], 
    tasks: //create files and folders on specs folders here 
} 

我碰到0123來了插件,也考慮了grunt-shell並製作我自己的腳本來實現這一點。

但我想知道是否已經有一個更簡單的方法來做到這一點。

回答

5

嘗試複製任務與過濾器屬性一起:

grunt.initConfig({ 
    copy: { 
    js: { 
     expand: true, 
     cwd: 'js/src', 
     src: '**/*.js', 
     dest: 'js/specs', 
     filter: function(filepath) { 
     var path = require('path'); 
     var dest = path.join(
      grunt.config('copy.js.dest'), 
      // Remove the parent 'js/src' from filepath 
      filepath.split(path.sep).slice(2).join(path.sep) 
     ); 
     return !(grunt.file.exists(dest)); 
     }, 
    }, 
    }, 
    watch: { 
    js: { 
     files: ['js/src/**/*.js'], 
     tasks: ['copy:js'], 
    }, 
    }, 
}); 

然後你可以把它複製爲您編輯或運行grunt copy:js不存在的文件。

+0

由於某些原因,即使dest目錄爲空,過濾器!grunt.file.exists(filepath)始終返回true。 – shriek

+0

grunt.file.exists只是檢查文件或目錄是否存在,而不是它是否爲空。 –

+0

對不起,我的意思是grunt.file.exists(filepath)總是返回true,這導致!grunt.file.exists每次都是false,這就是爲什麼沒有文件被複制。 – shriek

相關問題