{"id":16366877,"url":"https://github.com/jeff1evesque/grunt","last_synced_at":"2026-03-18T19:12:12.921Z","repository":{"id":18246540,"uuid":"21398382","full_name":"jeff1evesque/grunt","owner":"jeff1evesque","description":"Automates Sass, Uglify, Imagemin, Modernizr","archived":false,"fork":false,"pushed_at":"2014-08-05T13:00:25.000Z","size":1808,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-31T01:42:14.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeff1evesque.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-01T18:37:30.000Z","updated_at":"2022-09-25T23:56:07.000Z","dependencies_parsed_at":"2022-09-04T02:11:39.387Z","dependency_job_id":null,"html_url":"https://github.com/jeff1evesque/grunt","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeff1evesque%2Fgrunt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeff1evesque%2Fgrunt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeff1evesque%2Fgrunt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeff1evesque%2Fgrunt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeff1evesque","download_url":"https://codeload.github.com/jeff1evesque/grunt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239828603,"owners_count":19703905,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-11T02:47:51.787Z","updated_at":"2026-01-26T19:36:58.046Z","avatar_url":"https://github.com/jeff1evesque.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"Grunt\n=====\n\nThis repository contains the required submodules (plug-ins) to automate [grunt v0.4.5](http://gruntjs.com) tools such as [Sass](https://sass-lang.com), [Uglify](https://npmjs.org/package/uglify-js), [Modernizr](https://modernizr.com), [Imagemin](https://npmjs.org/package/imagemin) using the command line interface (terminal console).  Additional tools (plug-ins) can be automated.  However, check the list of [available plugins](http://gruntjs.com/plugins) within the *Grunt Ecosystem*.\n\n###Definition\n\n[*Grunt*](http://gruntjs.com) is an *automation tool* which assists in various repetitive tasks such as minification, compilation, unit testing, linting, etc.  Web-applications employing grunt is generally considered as a *testing*, or *staging* environment.  The compiled assets from this environment is typically pushed onto a *staging*, or *production* environments.\n\nGrunt works by adapting plugins, and automating them.  Some of the more notable plug-ins included in the *Grunt Ecosystem*:\n\n- [Sass](https://github.com/gruntjs/grunt-contrib-sass) (compile css)\n- [Uglify](https://github.com/gruntjs/grunt-contrib-uglify) (minify js)\n- [Modernizr](https://github.com/Modernizr/grunt-modernizr) (conditional js / css)\n- [Imagemin](https://github.com/gruntjs/grunt-contrib-imagemin) (minify images)\n\n##Pre-Installation\n\n###Linux Packages\n\nThe following packages need to be installed through terminal in Ubuntu:\n\n```\n# General Packages:\nsudo apt-get install ruby\nsudo apt-get install npm\nsudo apt-get install nodejs\nsudo gem install sass\n\n# Package Configuration: create a link to (/usr/bin/node) that points to \"nodejs\"\nsudo ln -s \"$(which nodejs)\" /usr/bin/node\n```\n\n**Note:** This project assumes [Ubuntu Server 14.04](http://www.ubuntu.com/download/server) as the operating system.\n\n###GIT\n\nFork this project into your GitHub account, then clone your repository of this project:\n\n```\ncd /var/www/html/[CLONE-DESTINATION]/\nsudo git clone https://[YOUR-USERNAME]@github.com/[YOUR-USERNAME]/grunt.git grunt\n```\n\nThen, add the Remote Upstream, this way we can pull any merged pull-requests:\n\n```\ncd /var/www/html/[CLONE-DESTINATION]/grunt/\ngit remote add upstream https://github.com/[YOUR-USERNAME]/grunt.git\n```\n\n**Note:** Each *web-application* requiring grunt, will need a clone of this repository.\n\n####GIT Submodule\n\nWe need to initialize our git *submodules*:\n\n```\ncd /var/www/html/[CLONE-DESTINATION]/\nsudo git submodule init\nsudo git submodule update\n\ncd /var/www/html/[CLONE-DESTINATION]/grunt/\nsudo git submodule init\nsudo git submodule update\n```\n\nThese commands will update submodules.  Checking out the most recent release for submodules should be committed to this repository (not in the Clone):\n\n```\ncd /var/www/html/[CLONE-DESTINATION]/grunt/node_modules/[SUBMODULE]/\ngit checkout [RELEASE_TAG]\ncd ../\ngit status\n```\n\nAfter checking-out a release for a submodule, commit, and merge the changes.  \n\n**Note:** Grunt, and Grunt plugins are installed and managed via npm, the Node.js packaged manager.  Therefore, all [grunt submodules](https://github.com/gruntjs) (plug-ins) belong within the `node_modules` directory, since Node.js requires this structure for submodule references being used with code.\n\n**Note:** clones of this repository will have the same submodule references in the `.gitmodules` file.\n\n###Project Settings\n\nIn order for *grunt* to perform, we need to define `package.json`.  This file contains the *project settings*, which tracks the development dependencies, and ultimately keeps environments synchronized:\n\n```\ncd /var/www/html/[CLONE-DESTINATION]/grunt/\nnpm init\n```\n\n**Note:** The *name*, and *version* field are required.  Values within paranthesis are default suggestions.\n\n##Installation\n\nWe need to install each grunt submodules (plug-ins):\n\n```\ncd /var/www/html/[CLONE-DESTINATION]/grunt/node_modules/[SUBMODULE]/\nnpm install --production\n```\n\nThen, install *grunt-cli* for all grunt projects:\n\n```\nsudo npm install -g grunt-cli\n```\n\n**Note:** this command can be run from any directory.\n\n##Execution\n\n###Automate Grunt\n\nIn order to automate *grunt*, we need to create a [`gruntfile.js`](https://gist.github.com/jeff1evesque/b98560d6c4d9914049f9).  This file should be saved in the same directory where `package.json` (refer to *Project Settings*, above) is found:\n\n```\ncd /var/www/html/[CLONE-DESTINATION]/grunt/\npico gruntfile.js\n```\n\nOnce the [`gruntfile.js`](https://gist.github.com/jeff1evesque/b98560d6c4d9914049f9) file has been saved, open a terminal window to dedicate the following command:\n\n```\ncd /var/www/html/[CLONE-DESTINATION]/grunt/\ngrunt\n```\n\nThis will perform the grunt operations defined within [`gruntfile.js`](https://gist.github.com/jeff1evesque/b98560d6c4d9914049f9), and apply any *watches* defined.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeff1evesque%2Fgrunt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeff1evesque%2Fgrunt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeff1evesque%2Fgrunt/lists"}