问题
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:
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.
来源:https://stackoverflow.com/questions/15471337/yeoman-task-requirejs-not-found