3

我在使用 yeoman 时遇到问题,特别是当我尝试运行 grunt 时,它在 requirejs 上失败,简单地说“任务‘requirejs’不存在”。这真的很奇怪,因为在我的 gruntfile 中我有 requirejs 的选项定义,并且我也将它安装在 package.json 文件中。你知道可能是什么问题吗?

谢谢!

// 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"
  ]);
};
4

1 回答 1

5

刚才遇到了类似的问题,经过一个小时的工作,我终于弄明白了:)

这是我的建议:

1 npm 更新

使用更新命令确保您已安装软件包。

2 检查你是否也犯过和我一样的错误。

关于 'package.json' 文件:我已将所有依赖项放在"dependencies"而不是"devDependencies"中。通过这样做,npm 仍然会安装所有的包,但 yeoman 会发现它们。

于 2013-09-15T08:26:52.987 回答