Grunt installation error when deploying azure web application via deploy.cmd file

I am trying to create and package my project using Azure Git deployment.

I created the following files

  • .deployment
  • deploy.cmd
  • Gruntfile.js
  • package.json
  • bower.json

I followed the JJ Harris blog post. The following is the deployment section in the deploy.cmd file:

:: 2. Select node version call :SelectNodeVersion :: 3. Install npm packages IF EXIST "%DEPLOYMENT_TARGET%\package.json" ( pushd "%DEPLOYMENT_TARGET%" call :ExecuteCmd !NPM_CMD! install --production IF !ERRORLEVEL! NEQ 0 goto error popd ) :: 4. Install bower packages IF EXIST "%DEPLOYMENT_TARGET%\bower.json" ( call !NPM_CMD! install bower IF !ERRORLEVEL! NEQ 0 goto error call .\node_modules\.bin\bower install IF !ERRORLEVEL! NEQ 0 goto error ) :: 4. run grunt IF EXIST "%DEPLOYMENT_TARGET%\Gruntfile.js" ( call !NPM_CMD! install grunt-cli call .\node_modules\.bin\grunt --no-color clean common dist IF !ERRORLEVEL! NEQ 0 goto error ) 

Deployment fails with the error below:

 Selected npm version 3.8.6 Updating iisnode.yml at D:\home\site\wwwroot\iisnode.yml spa@ D:\home\site\wwwroot +-- bower@1.7.9 extraneous npm WARN grunt-contrib-compass@1.0.4 requires a peer of grunt@ >=0.4.0 but none was installed. +-- UNMET PEER DEPENDENCY grunt@ >=0.4.0 `-- grunt-cli@1.2.0 extraneous spa@ D:\home\site\repository `-- bower@1.7.9 extraneous spa@ D:\home\site\repository +-- bower@1.7.9 extraneous `-- grunt-cli@1.2.0 extraneous grunt-cli: The grunt command line interface (v1.2.0) Fatal error: Unable to find local grunt. If you're seeing this message, 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 An error has occurred during web site deployment. npm WARN grunt-contrib-compass@1.0.4 requires a peer of grunt@ >=0.4.0 but none was installed.\r\nC:\Program Files (x86)\SiteExtensions\Kudu\55.50610.2267\bin\Scripts\starter.cmd deploy.cmd 

I'm not sure what else I need to do to install it. I tried to search the net for a similar problem, but could not find specific solutions to the problem. It would be great if someone could help me with this.

My package.json

 { "name": "myapp", "private": true, "devDependencies": { "autoprefixer-core": "^5.2.1", "grunt": "^0.4.5", "grunt-angular-templates": "^0.5.7", "grunt-concurrent": "^1.0.0", "grunt-contrib-clean": "^0.6.0", "grunt-contrib-compass": "^1.0.0", "grunt-contrib-concat": "^0.5.0", "grunt-contrib-connect": "^0.9.0", "grunt-contrib-copy": "^0.7.0", "grunt-contrib-cssmin": "^0.12.0", "grunt-contrib-htmlmin": "^0.4.0", "grunt-contrib-imagemin": "^1.0.0", "grunt-contrib-jshint": "^0.11.0", "grunt-contrib-uglify": "^0.7.0", "grunt-contrib-watch": "^0.6.1", "grunt-filerev": "^2.1.2", "grunt-google-cdn": "^0.4.3", "grunt-jscs": "^1.8.0", "grunt-newer": "^1.1.0", "grunt-ng-annotate": "^0.9.2", "grunt-postcss": "^0.5.5", "grunt-svgmin": "^2.0.0", "grunt-usemin": "^3.0.0", "grunt-wiredep": "^2.0.0", "imagemin": "^5.2.1", "jasmine-core": "^2.4.1", "jit-grunt": "^0.9.1", "jshint-stylish": "^1.0.0", "karma": "^0.13.22", "karma-jasmine": "^1.0.2", "karma-phantomjs-launcher": "^1.0.0", "phantomjs-prebuilt": "^2.1.7", "readable-stream": "^2.1.4", "through2": "^2.0.1", "time-grunt": "^1.0.0", "vinyl-fs": "^2.2.1" }, "engines": { "node": ">=0.10.0" }, "scripts": { "test": "karma start test\\karma.conf.js" } } 

NOTE Until a solution is found, I'm going to Azure Support to find out what I can do. I will update the question as soon as I find some solution.

+6
source share
2 answers

Most of the similar questions (not for azure) indicate:

 npm install grunt --save-dev npm install -g grunt --save-dev 

(try setting global -g if you use grunt from script)

This thread mentions that grunt should be installed and presented in PATH for azure:

The problem is not that grunt not found on the path (" D:\Program Files (x86)\grunt\0.1.13\grunt "). It definitely starts working, but grunt himself complains.
If I get to the Kudu console and run ' grunt ' from the folder D:\home\site\repository , it will display exactly the same thing.

projectkudu/kudu Problem 1150 confirms:

this does not happen when running Kudu locally (i.e. outside of Azure).
So maybe something scared in the runtime on Azure sites.

As you can see from the problem with grunt 1459 , check the exit error code:

 $ echo $? 99 

we will first rename the node_modules/grunt directory so that grunt-cli cannot find local grunts. This should result in error 99.

The expected results that make me think that the misleading grunt-cli error message confused the developers, thinking that Grunt itself is returning the wrong error code.

So, in the case of Azure, grunt and path can be set, but not where grunt-cli expects it.

+2
source

Manage that your .json package has the following line.

 "devDependencies": { "grunt": "~0.4.5", .. } 

Grunt-cli expects local grunts in your project. This error

Fatal error: Cannot find local grunt.

refers to this local grunt. Since your script is already running npm install , all you need to add is add the "grunt": "~ 0.4.5" line to your package.json in the dependencies.

The following command also does the same thing that adds grunt to devDependencies.

 npm install grunt --save-dev 
+2
source

All Articles