Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

grunt Fatal error: Unable to find local grunt in Yeoman

Tags:

gruntjs

yeoman

I installed yeoman and started the examples which are provided in the official documentation. I went through the suggested operations

    yo webapp 
    bower install underscore  
    grunt

After running grunt I have the message

    grunt-cli: The grunt command line interface. (v0.1.9)

    Fatal error: Unable to find local grunt.

    If you're seeing this message, either a Gruntfile wasn't found or grunt
    hasn't been installed locally to your project. For more information about
    installing and configuring grunt, please see the Getting Started guide:

    http://gruntjs.com/getting-started

Note that grunt have been installed with

    npm install -g grunt-cli

and

    npm install -g grunt

yo has generated the Gruntfile.js in the project root, where I am running the command.
The package.json has been generated as well:

    "name": "testyo",
    "version": "0.0.0",
    "dependencies": {},
    "devDependencies": {
      "grunt": "~0.4.1",
      "grunt-contrib-copy": "~0.4.1",
      "grunt-contrib-concat": "~0.1.3",
      "grunt-contrib-coffee": "~0.6.5",
      "grunt-contrib-uglify": "~0.2.0",
      "grunt-contrib-compass": "~0.2.0",
      "grunt-contrib-jshint": "~0.4.1",
      "grunt-contrib-cssmin": "~0.6.0",
      "grunt-contrib-connect": "~0.2.0",
      "grunt-contrib-clean": "~0.4.0",
      "grunt-contrib-htmlmin": "~0.1.3",
      "grunt-contrib-imagemin": "~0.1.3",
      "grunt-contrib-watch": "~0.4.0",
      "grunt-rev": "~0.1.0",
      "grunt-autoprefixer": "~0.1.20130516",
      "grunt-usemin": "~0.1.10",
      "grunt-mocha": "~0.3.0",
      "grunt-open": "~0.2.0",
      "grunt-svgmin": "~0.1.0",
      "grunt-concurrent": "~0.1.0",
      "matchdep": "~0.1.1",
      "connect-livereload": "~0.2.0"
    },
    "engines": {
      "node": ">=0.8.0"
    }

Additionally. From the root directory

    grunt --version
    grunt-cli v0.1.9

This confirm that grunt is available to be run in every directory.
Any idea?

like image 363
blackbird014 Avatar asked Aug 07 '13 22:08

blackbird014


People also ask

How do I install grunt locally to my project?

Installing grunt-cli locally js method to get started with a project ( npm install && npm test ) then install grunt-cli locally with npm install grunt-cli --save-dev. Then add a script to your package. json to run the associated grunt command: "scripts": { "test": "grunt test" } .

How do I install grunt?

Installing a published development version Like installing a specific version of grunt, run npm install grunt@VERSION --save-dev where VERSION is the version you need, and npm will install that version of Grunt in your project folder, adding it to your package.

How do I download grunt from command line?

Installing the CLI. Run sudo npm install -g grunt-cli (Windows users should omit "sudo ", and may need to run the command-line with elevated privileges). The grunt command-line interface comes with a series of options. Use grunt -h from your terminal to show these options.

What is grunt cli npm?

npm install -g grunt-cli. This will put the grunt command in your system path, allowing it to be run from any directory. Note that installing grunt-cli does not install the Grunt task runner! The job of the Grunt CLI is simple: run the version of Grunt which has been installed next to a Gruntfile .


3 Answers

npm cache clean
sudo npm install grunt --save-dev

really did the trick for me

like image 24
Paulo Almeida Avatar answered Oct 12 '22 00:10

Paulo Almeida


After some quick research I realized, from the grunt documentation, that grunt has to be installed in the project. I did that by running:

    sudo npm install grunt --save-dev

Now grunt works.

I also needed to run:

    npm install

so that all the dependencies are loaded.

This solved my problem. To be honest I thought yeoman would have taken care of the last two steps automatically.

In case you have comments or think there is a better solution, please leave a comment.

like image 99
blackbird014 Avatar answered Oct 12 '22 01:10

blackbird014


I ran into the same problem.

After running npm install, make sure a node_modules folder is created in the root of your project. This is the folder where "local grunt" will be placed. If the folder is not there, check your npm cofiguration npm config ls and make sure you have global=false.

I've found the solution here: https://stackoverflow.com/a/13449393/1046584

like image 2
Luís Bianchin Avatar answered Oct 12 '22 00:10

Luís Bianchin