首页 文章

找不到任务“默认” . 使用--force继续 . 因警告而中止

提问于
浏览
0

这是我的gruntfile.js

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');
};

当我在终端中运行grunt时 - 这是错误

Warning: Task "default" not found. Use --force to continue. Aborted due to warnings.

添加--force后显示:

Warning: Task "default" not found. Used --force, continuing. Done, but with warnings.

4 回答

  • 0

    首先,您需要了解grunt命令的工作原理

    • 您在Gruntfile.js中定义/注册任务

    • 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 的任务

    与您的grunt文件一样,没有定义默认任务,命令失败 .

  • 0

    gruntfile中没有名为“default”的任务 . 您是否尝试运行构建任务?

    如果是这样,请替换此行:

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

    有了这条线

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

  • 0

    Tasks have to be registered in grunt before they can be executed .

    您已经在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 的任务 .

    因此,注册 default 任务(与构建任务相同)

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

    您还可以将第三个参数作为已注册任务的数组传递,以便在运行 grunt 时执行该操作 .

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

    现在,当您执行 grunt 时,所有这些任务将按顺序执行 .

    请注意,tasks数组中的每个任务都应该是 registered ,使用 grunt.registerTask .

  • 0

    您忘了添加默认任务 .

    在“grunt.registerTask('test','mochaTest')之后添加以下行;”线 .

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

    此任务将同时运行'test'和'build' . 当没有任何参数运行“grunt”时 .

    有关详细信息,请参阅grunt document on task .

相关问题