grunt-github-pages v0.0.4
Grunt Github Pages
Publish your project's pages on Github with one command.
A Grunt task that enables you to publish to the gh-page branch with one command line.
Getting Started
npm install grunt-github-pages --save-devPreparing your repository
You need to create a folder and add it to your .gitignore file. In that folder you have to clone the same repository again and point to the gh-page branch.
Assume the target folder is named _site/ and our github repository is named project:
$ ls -la
.
..
.git
.gitignore
index.mdWe add the _site folder in .gitignore and clone the current repository ( project ) to _site:
$ git clone git@github.com:thanpolas/project.git _site
$ cd _siteA full copy of the project repository now exists in the _site folder. We now need to point it to the gh-pages branch and we are good to go:
$ pwd
project/_site/
$ git checkout -b gh-pages
Switched to a new branch 'gh-pages'
$ git push origin gh-pagesYour repository is now ready to start using the Github Pages task!
The githubPages Task
Edit your Gruntfile and add the githubPages task:
githubPages: {
target: {
options: {
// The default commit message for the gh-pages branch
commitMessage: 'push'
},
// The folder where your gh-pages repo is
src: '_site'
}
}
/* ... later on, after grunt.initConfig() call, create an alias: */
// create an alias for the githubPages task
grunt.registerTask('push', ['githubPages:target']);So when you issue grunt push on your command line this is what will happen:
- The Current Working Directory will change to
_site. - The command
git add .will be performed. - The command
git commit -am "push"will be performed. - The command
git push origin gh-pageswill be performed.
The src Option
The src option must be a single string that represents a directory. The API is weak at this point but use cases need to be presented before a solution is attempted as there are a few intricacies involved. So do create an issue if you need globbing patterns here.
The dest Option
There are some cases, like building a Jekyll site, that the destination folder _site will get overwritten by the generation of static pages, along with the .git folder. For these kind of cases a trick would be to maintain one more ignored directory where the .git folder is retained.
The second ignored directory should be the dest option in your config file:
githubPages: {
target: {
// The folder where your gh-pages repo is
src: '_site',
// The second ignored directory with the .git folder
dest: '_site_git'
}
}In this case, when you issue grunt push this is what will happen:
- All the contents of
_sitefolder will be deep copied to_site_gitoverriding. - The Current Working Directory will change to
_site_git. - The command
git add .will be performed. - The command
git commit -am "auto commit"will be performed. - The command
git push origin gh-pageswill be performed.
Other Options
commitMessage
Type: string Default: auto commit
The default commit message for the gh-pages branch.
remote
Type: string Default: origin
The name of the remote to be used when issuing git push.
pushBranch
Type: string Default: gh-pages
The name of the branch to be used when issuing git push.
Release History
- v0.0.1, Mid Mar 2013
- Big Bang
License
Copyright (c) 2013 Thanasis Polychronakis Licensed under the MIT.