2016-12-05 69 views
0

這裏是我的gruntfile.js找不到任務「默認」。使用--force繼續。中止由於警告

var fs = require("fs"), 
 
    browserify = require("browserify"), 
 
    pkg = require("./package.json"); 
 

 
module.exports = function(grunt) { 
 
    grunt.initConfig({ 
 
    mochaTest: { 
 
     test: { 
 
     options: { 
 
      style: 'bdd', 
 
      reporter: 'spec' 
 
     }, 
 
     src: ['test/unit/*.js'] 
 
     } 
 
    }, 
 
    pkg: grunt.file.readJSON('package.json'), 
 
    uglify: { 
 
     options: { 
 
     banner: "/*\n" + grunt.file.read('LICENSE') + "*/" 
 
     }, 
 
     dist: { 
 
     files: { 
 
      '<%=pkg.name%>-<%=pkg.version%>.min.js': ['<%=pkg.name%>-<%=pkg.version%>.js'] 
 
     } 
 
     } 
 
    } 
 
    }); 
 

 
    grunt.registerTask('build', 'build a browser file', function() { 
 
    var done = this.async(); 
 

 
    var outfile = './brain-' + pkg.version + '.js'; 
 

 
    var bundle = browserify('./browser.js').bundle(function(err, src) { 
 
     console.log("> " + outfile); 
 

 
     // prepend license 
 
     var license = fs.readFileSync("./LICENSE"); 
 
     src = "/*\n" + license + "*/" + src; 
 

 
     // write out the browser file 
 
     fs.writeFileSync(outfile, src); 
 
     done(); 
 
    }); 
 
    }); 
 
    grunt.registerTask('test', 'mochaTest'); 
 

 
    grunt.loadNpmTasks('grunt-mocha-test'); 
 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
 
};

當我只是在終端上運行的呼嚕聲 - 這裏是錯誤

警告:任務「默認」不找到。使用--force繼續。 由於警告而中止。

添加--force它後顯示:

警告:任務 「默認」 未找到。使用 - 強制,繼續。 完成,但有警告。

+0

你需要註冊一個名爲「默認」的任務。沒有註冊它,grunt不知道執行「grunt」命令時要執行的所有任務(默認情況下)。 –

+0

感謝哥們。但我是新手,你能告訴我怎麼做到這一點。 – Inzimam

回答

0

首先,你需要了解你的命令是如何繁重的工作

  1. 定義/在你Gruntfile.js註冊任務
  2. Thenyou調用任務從命令提示符

從你下面的grunt文件是註冊的任務

grunt.registerTask('build', 'build a browser file', function() { 
    var done = this.async(); 

    var outfile = './brain-' + pkg.version + '.js'; 

    var bundle = browserify('./browser.js').bundle(function(err, src) { 
     console.log("> " + outfile); 

     // prepend license 
     var license = fs.readFileSync("./LICENSE"); 
     src = "/*\n" + license + "*/" + src; 

     // write out the browser file 
     fs.writeFileSync(outfile, src); 
     done(); 
    }); 
    }); 

你可以然後通過調用grunt build來調用該任務,該任務將運行該任務。而當你只運行grunt它將查找名稱爲default

在你的呼嚕聲文件有你命令失敗定義沒有默認任務的任務。

+0

謝謝,很好的解釋。我添加默認,而不是生成現在它只從grunt命令運行,但運行後我怎樣才能在瀏覽器中打開它。 – Inzimam

+0

寫一個任務,這樣做。找到並咕嚕將在代碼最後一部分它表明運行在瀏覽器 –

+0

代碼靜態服務器,//寫出來的瀏覽器文件。你能告訴我它會在瀏覽器中運行代碼嗎? – Inzimam

0

gruntfile中沒有稱爲「默認」的任務。你是否試圖運行構建任務?

如果是這樣,替換此行:

grunt.registerTask('build', 'build a browser file', function() { ...

這一行

grunt.registerTask('default', 'build a browser file', function() { ...

+0

運行「默認」任務 > ./brain-0.7.0.js 完成,沒有錯誤。 謝謝,但我怎麼能現在打開這個從我的瀏覽器。 – Inzimam

0

任務有咕嚕必須註冊纔可執行之前。

你已經在你的咕嚕註冊的構建任務,

grunt.registerTask('build', 'build a browser file', function() { 
    var done = this.async(); 

    var outfile = './brain-' + pkg.version + '.js'; 

    var bundle = browserify('./browser.js').bundle(function(err, src) { 
     console.log("> " + outfile); 

     // prepend license 
     var license = fs.readFileSync("./LICENSE"); 
     src = "/*\n" + license + "*/" + src; 

     // write out the browser file 
     fs.writeFileSync(outfile, src); 
     done(); 
    }); 
    }); 

這可以通過所謂的grunt build執行。

當您執行grunt時,默認情況下它會查找名爲default的任務,該任務應該註冊。

所以,註冊一個default任務(同樣訂做任務)

grunt.registerTask('default', 'Executed default task', function() { 
    ... 
}); 

您也可以通過第三個參數作爲登記任務陣列,這樣如果你運行grunt將要執行。現在

grunt.registerTask('default', 'Executed default task', [ 
    'task1', 
    'task4', 
    'task3', 
]); 

當你執行grunt,所有這些任務將依次執行。

請注意任務數組中的每個任務應該是註冊使用grunt.registerTask

+0

謝謝。我將在哪裏添加本地服務器的端口號以便在我的gruntfile中訪問? – Inzimam

+0

對不起,我沒有明白。你爲什麼希望你的本地服務器到達grunt文件? –

+0

我想在瀏覽器中運行我的應用程序,我將在哪裏添加端口號,以便通過瀏覽器訪問它? – Inzimam

0

您忘記了添加默認任務。

在「grunt.registerTask('test','mochaTest');」之後加入以下行:「線。

grunt.registerTask('default', ['test', 'build']); 

此任務將運行「測試」和「構建」。在沒有任何爭論的情況下運行「grunt」。請參閱grunt document on task

+0

謝謝,但我怎麼可以在瀏覽器中運行這個,因爲gruntfile中沒有提到端口號。對不起,如果我沒有意義,因爲我是新來的咕嚕聲。 – Inzimam

+0

您正在使用[grunt-serve](https://www.npmjs.com/package/grunt-serve)。它將爲您提供文件。它是默認的端口它「9000」 – SafeHouse

+0

是的,但它會在運行這個不是構建。我可以用構建和它的作品,但我怎麼可以運行它,這樣我可以在端口9000 訪問使用咕嚕build命令後,我不能達到它在9000。 – Inzimam

相關問題