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"
]);
};
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With