2013-07-11 191 views
1

我有一個通過NPM taskA(而不是實際的名稱)安裝了一個咕嚕任務咕嚕任務相關

任務A具有相關性:咕嚕-的contrib觸控筆和在任務A的指定的package.json並安裝。由於某些原因,從主Gruntfile.js運行grunt默認時,它會給出錯誤。

Warning: Task "stylus" not found. Use --force to continue.

修復該問題,要求在主項目咕嚕-的contrib觸控筆。我想避免這種情況。我的任務沒有在其node_modules /中使用grunt-contrib-stylus是什麼原因?

任務A

module.exports = function(grunt) { 
'use strict'; 

grunt.loadNpmTasks('grunt-contrib-stylus'); 
... 

主要Gruntfile.js

... 
grunt.loadNpmTasks('taskA'); 
... 

回答

3

grunt.loadNpmTasks負荷[cwd]/node_modules/[modulename]/tasks/。您可以通過改變cwd加載任務,dependenies:

任務A

module.exports = function(grunt) { 
    var parentcwd = process.cwd(); 
    process.chdir(__dirname); 

    grunt.loadNpmTasks('grunt-contrib-stylus'); 

    process.chdir(parentcwd); 
}; 

只是一定要設置cwd回父結尾。

0

剛剛發現了一種看似簡單的方法來使用node-isms來做到這一點。即使在kyle-robinson-young的回答中,如果您的任務依賴於另一個通過peerDependencies執行的任務,或者處於嵌套結構中,您仍然會收到警告。

這是一種解決方法!

在你任務A

module.exports = function(grunt) { 
    require('grunt-contrib-stylus/tasks/stylus')(grunt); 
    // Other stuff you need to do as part of your task 
} 

咕嚕似乎並不關心,如果一個任務是通過registerMultiTaskregisterTask不止一次連接。