Yeoman - task “requirejs” not found

2019-05-11 17:40发布

I'm having problems with yeoman, specifically, when I try to run grunt, it fails on the requirejs, stating simply that "The task 'requirejs' doesn't exist". That is really strange, since in my gruntfile I have the options definition for requirejs, and I also have it installed in the package.json file. Do you know what could be the problem?

Thank you!

// Generated on 2013-03-14 using generator-webapp 0.1.5
"use strict";
var lrSnippet = require("grunt-contrib-livereload/lib/utils").livereloadSnippet;
var mountFolder = function(connect, dir) {
  return connect.static(require("path").resolve(dir));
};

// # Globbing
// for performance reasons we"re only matching one level down:
// "test/spec/{,*/}*.js"
// use this if you want to match all subfolders:
// "test/spec/**/*.js"

module.exports = function(grunt) {
  // load all grunt tasks
  require("matchdep").filterDev("grunt-*").forEach(grunt.loadNpmTasks);

  // configurable paths
  var yeomanConfig = {
    app: "app",
    dist: "dist"
  };

  grunt.initConfig({
    yeoman: yeomanConfig,
    watch: {
      coffee: {
        files: ["<%= yeoman.app %>/scripts/{,*/}*.coffee"],
        tasks: ["coffee:dist"]
      },
      coffeeTest: {
        files: ["test/spec/{,*/}*.coffee"],
        tasks: ["coffee:test"]
      },
      compass: {
        files: ["<%= yeoman.app %>/styles/{,*/}*.{scss,sass}"],
        tasks: ["compass"]
      },
      livereload: {
        files: [
          "<%= yeoman.app %>/*.html",
          "{.tmp,<%= yeoman.app %>}/styles/{,*/}*.css",
          "{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js",
          "<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,webp}"],
        tasks: ["livereload"]
      }
    },
    clean: {
      dist: [".tmp", "<%= yeoman.dist %>/*"],
      server: ".tmp"
    },
    jshint: {
      options: {
        jshintrc: ".jshintrc"
      },
      all: [
        "Gruntfile.js",
        "<%= yeoman.app %>/scripts/{,*/}*.js",
        "!<%= yeoman.app %>/scripts/vendor/*",
        "test/spec/{,*/}*.js"]
    },
    coffee: {
      dist: {
        files: [{
          // rather than compiling multiple files here you should
          // require them into your main .coffee file
          expand: true,
          cwd: "<%= yeoman.app %>/scripts",
          src: "*.coffee",
          dest: ".tmp/scripts",
          ext: ".js"
        }]
      },
      test: {
        files: [{
          expand: true,
          cwd: ".tmp/spec",
          src: "*.coffee",
          dest: "test/spec"
        }]
      }
    },
    compass: {
      options: {
        sassDir: "<%= yeoman.app %>/styles",
        cssDir: ".tmp/styles",
        imagesDir: "<%= yeoman.app %>/images",
        javascriptsDir: "<%= yeoman.app %>/scripts",
        fontsDir: "<%= yeoman.app %>/styles/fonts",
        importPath: "app/components",
        relativeAssets: true
      },
      dist: {}
    },
    requirejs: {
      dist: {
        options: {
          baseUrl: "app/scripts/editor",
          optimize: "none",
          preserveLicenseComments: false,
          useStrict: true,
          wrap: true
        }
      }
    },
    useminPrepare: {
      html: "<%= yeoman.app %>/index.html",
      options: {
        dest: "<%= yeoman.dist %>"
      }
    },
    usemin: {
      html: ["<%= yeoman.dist %>/{,*/}*.html"],
      css: ["<%= yeoman.dist %>/styles/{,*/}*.css"],
      options: {
        dirs: ["<%= yeoman.dist %>"]
      }
    },
    imagemin: {
      dist: {
        files: [{
          expand: true,
          cwd: "<%= yeoman.app %>/images",
          src: "{,*/}*.{png,jpg,jpeg}",
          dest: "<%= yeoman.dist %>/images"
        }]
      }
    },
    cssmin: {
      dist: {
        files: {
          "<%= yeoman.dist %>/styles/main.css": [
            ".tmp/styles/{,*/}*.css",
            "<%= yeoman.app %>/styles/{,*/}*.css"]
        }
      }
    },
    htmlmin: {
      dist: {
        options: {
          removeCommentsFromCDATA: true,
          // https://github.com/yeoman/grunt-usemin/issues/44
          //collapseWhitespace: true,
          collapseBooleanAttributes: true,
          removeAttributeQuotes: true,
          removeRedundantAttributes: true,
          useShortDoctype: true,
          removeEmptyAttributes: true,
          removeOptionalTags: true
        },
        files: [{
          expand: true,
          cwd: "<%= yeoman.app %>",
          src: "*.html",
          dest: "<%= yeoman.dist %>"
        }]
      }
    },
    copy: {
      dist: {
        files: [{
          expand: true,
          dot: true,
          cwd: "<%= yeoman.app %>",
          dest: "<%= yeoman.dist %>",
          src: [
            "*.{ico,txt}",
            ".htaccess"]
        }]
      }
    },
    bower: {
      all: {
        rjsConfig: "<%= yeoman.app %>/scripts/main.js"
      }
    }
  });

  grunt.renameTask("regarde", "watch");

  grunt.registerTask("server", function(target) {
    if (target === "dist") {
      return grunt.task.run(["build", "open", "connect:dist:keepalive"]);
    }

    grunt.task.run([
      "clean:server",
      "coffee:dist",
      "livereload-start",
      "connect:livereload",
      "open",
      "watch"
    ]);
  });

  grunt.registerTask("test", [
    "clean:server",
    "coffee",
    "compass"
  ]);

  grunt.registerTask("build", [
    "clean:dist",
    "coffee",
    "compass:dist",
    "useminPrepare",
    "requirejs",
    "imagemin",
    "htmlmin",
    "concat",
    "cssmin",
    "uglify",
    "copy",
    "usemin"
  ]);

  grunt.registerTask("default", [
    "jshint",
    "test",
    "build"
  ]);
};

1条回答
Lonely孤独者°
2楼-- · 2019-05-11 18:25

I came across a similar problem just now, and after an hour working, I finally figure it out :)

Here is my suggest:

1 npm update

use the update command to make sure you have the packages installed.

2 check if you have made the same mistake like me.

About the 'package.json' file: I have placed all my dependencies in "dependencies" instead of "devDependencies". By doing so, npm will still install all the packages, yet yeoman will fall to find them.

查看更多
登录 后发表回答