How to install grunt on Ubuntu 14.04
Grunt is a Javascript task runner that can be used to compile Sass, run JSHint, or run many other plugins. It depends on theNode.js package manager, npm.
If you use the standard Ubuntu Trusty Tahr repository to install nodejs/npm, you will get this error when running grunt:
/usr/bin/env: node: No such file or directory
Instead, use the chris-lea nodejs repository.
Install nodejs, npm, and grunt-cli
$ sudo add-apt-repository ppa:chris-lea/node.js
$ sudo apt-get update
$ sudo apt-get install nodejs
$ sudo npm install -g grunt-cli
Install grunt in your project directory
$ cd ~/myproject
$ echo "{}" > package.json
$ npm install grunt --save-dev
Verify grunt is installed
$ nodejs --version
v0.10.33
$ npm --version
1.4.28
$ grunt --version
grunt-cli v0.1.13
grunt v0.4.5
Run a simple grunt task
-
$ cd ~/myproject
- Create a package.json file:
{ "name": "my-project-name", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.5", "grunt-contrib-uglify": "~0.5.0" } }
- Install grunt-contrib-uglify
$ npm install npm WARN package.json my-project-name@0.1.0 No description npm WARN package.json my-project-name@0.1.0 No repository field. npm WARN package.json my-project-name@0.1.0 No README data grunt-contrib-uglify@0.5.1 node_modules/grunt-contrib-uglify ├── chalk@0.5.1 (ansi-styles@1.1.0, escape-string-regexp@1.0.2, supports-color@0.2.0, strip-ansi@0.3.0, has-ansi@0.1.0) ├── lodash@2.4.1 ├── maxmin@0.2.2 (figures@1.3.5, pretty-bytes@0.1.2, gzip-size@0.2.0) └── uglify-js@2.4.15 (uglify-to-browserify@1.0.2, async@0.2.10, optimist@0.3.7, source-map@0.1.34)
- Get an example unminified JS file:
$ wget http://code.jquery.com/jquery-2.1.1.js --2014-11-22 00:47:31-- http://code.jquery.com/jquery-2.1.1.js Resolving code.jquery.com (code.jquery.com)... 94.31.29.53, 94.31.29.230 Connecting to code.jquery.com (code.jquery.com)|94.31.29.53|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 247351 (242K) [application/x-javascript] Saving to: ‘jquery-2.1.1.js’ 100%[================================================================================================================>] 247,351 --.-K/s in 0.1s 2014-11-22 00:47:31 (1.71 MB/s) - ‘jquery-2.1.1.js’ saved [247351/247351]
- Create a Gruntfile.js file:
module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), uglify: { build: { src: 'jquery-2.1.1.js', dest: 'jquery-2.1.1.min.js' } } }); grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.registerTask('default', ['uglify']); };
- Run the grunt task:
$ grunt Running "uglify:build" (uglify) task Done, without errors.
- You should now have a minified file, jquery-2.1.1.min.js
$ ls -gG jquery* -rw-rw-r-- 1 247351 2014 10/23 17:16 jquery-2.1.1.js -rw-rw-r-- 1 84113 2014 11/22 00:48 jquery-2.1.1.min.js