2015-11-18 24 views
2

我想在sails.js應用程序中添加新的grunt任務。sails.js中的Grunt無法識別新任務

爲了保持我的測試用例的簡單性,我已將副本任務複製到一個新文件copy-tests.js中,該文件也位於tasks/config文件夾中。

我已經修改複製tests.js到設定方法的第一個參數更新爲「複製測試」,所以它現在讀取

module.exports = function(grunt) { 
    grunt.config.set('copy-tests', { 
     dev: { 
      files: [{ 
       expand: true, 
       cwd: './assets', 
       src: ['**/*.!(coffee|less)'], 
       dest: '.tmp/public' 
      }] 
     }, 
     build: { 
      files: [{ 
       expand: true, 
       cwd: '.tmp/public', 
       src: ['**/*'], 
       dest: 'www' 
      }] 
     } 
    }); 
    grunt.loadNpmTasks('grunt-contrib-copy'); 
}; 

我已經更新compileAssets.js加我的新任務,所以它現在讀取

module.exports = function (grunt) { 
    grunt.registerTask('compileAssets', [ 
     'clean:dev', 
     'jst:dev', 
     'less:dev', 
     'copy:dev', 
     'copy-tests:dev', 
     'coffee:dev', 
     'jade:dev' 
    ]); 
}; 

當我嘗試舉帆應用程序,我得到「任務‘複製測試:開發’未找到」

我知道咕嚕可以看到我的文件,我已經加入Gruntfile.js的日誌語句爲fo llows

var taskConfigurations = loadTasks('./tasks/config'), 
    registerDefinitions = loadTasks('./tasks/register'); 
    console.log(taskConfigurations); 

我可以看到拷貝測試中的其他任務中,當本聲明日誌

任何人都可以用,爲什麼咕嚕聲稱無法找到複製的測試幫助:開發?

或者,也許我正在走這個錯誤的方式。我試圖實現的是有兩個複製任務,一個將我的主要構建內容複製到.tmp文件夾,另一個將我的客戶端測試複製到.tmp文件夾。後來我會確保只有我的開發版本運行兩個複製任務,我的產品只能運行第一個。我認爲最好的辦法是使用config文件夾中的兩個grunt任務,但也許有另外一種方法...

+0

您是否還在tasks/register文件夾中定義了'copy-tests'? – jperezov

+0

它是compileAssets.js,如上所述,它位於tasks/register文件夾中。是否有其他地方在你認爲需要的註冊文件夾中? – zcesl53

+0

編輯我的問題,使我的意圖更清晰,因爲我不想定義一個新類型的咕task任務,只是重用現有的一個 – zcesl53

回答

2

而不是定義第二個任務有一個替代副本,我需要添加到副本任務如下

module.exports = function(grunt) { 

    grunt.config.set('copy', { 
     dev: { 
      files: [{ 
       expand: true, 
       cwd: './assets', 
       src: ['**/*.!(coffee|less)'], 
       dest: '.tmp/public' 
      }] 
     }, 
     devTests: { 
      files: [{ 
       expand: true, 
       cwd: './tests', 
       src: ['**/*.*'], 
       dest: '.tmp/public/tests' 
      }] 
     },   
     build: { 
      files: [{ 
       expand: true, 
       cwd: '.tmp/public', 
       src: ['**/*'], 
       dest: 'www' 
      }] 
     } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-copy'); 
}; 

我compileAssets然後貌似

module.exports = function (grunt) { 
    grunt.registerTask('compileAssets', [ 
     'clean:dev', 
     'jst:dev', 
     'less:dev', 
     'copy:dev', 
     'copy:devTests', 
     'coffee:dev', 
     'jade:dev' 
    ]); 
}; 

我意識到這一點時,我看了看帆,linker.js任務,看到多少目標,有在。我一直在考慮將目標作爲構建目標,並假設它們具有開發,測試,產品等價值,但似乎它們是一個更廣泛的概念,我想要做的每種副本都應該成爲副本中的目標.js任務。