Jekyll: How to Use Custom Plugins with Github Pages

How to Install/Use Jekyll Plugins in GitHubPages?

I'm the developer of Jekyll Target Blank. GH Pages only support some plugins https://help.github.com/articles/adding-jekyll-plugins-to-a-github-pages-site/. I have requested for this plugin to become supported but they their response was a maybe.

How do I configure GitHub to use non-supported Jekyll site plugins?

Depending if you deal with a User/Organization (UO) site or a Project site (P), do :

  1. from your working folder git init
  2. git remote add origin git@github.com:userName/userName.github.io.git (UO) or git remote add origin git@github.com:userName/repositoryName.git (P)
  3. jekyll new . creates your code base
  4. in _config.yml, set the baseurl parameter to baseurl: '' (UO) or baseurl: '/repositoryName' (P)
  5. in .gitignore add _site, it will be versioned in the other branch
  6. jekyll build will create the destination folder and build site.
  7. git checkout -b sources (UO) or git checkout master (P)
  8. git add -A
  9. git commit -m "jekyll base sources" commit your source code
  10. git push origin sources (UO) or git push origin master (P) push your sources in the appropriate branch
  11. cd _site
  12. touch .nojekyll, this file tells gh-pages that there is no need to build
  13. git init init the repository
  14. git remote add origin git@github.com:userName/userName.github.io.git (UO) or git remote add origin git@github.com:userName/repositoryName.git (P)
  15. git checkout master (UO) or git checkout -b gh-pages (P) put this repository on the appropriate branch
  16. git add -A
  17. git commit -m "jekyll first build" commit your site code
  18. git push origin master (UO) or git push origin gh-pages (P)

You now have something like Octopress does. Look at their rake file, there are some nice comments inside.

Use 'jekyll-multiple-languages-plugin' with GitHub Pages

GitHub Pages allow a limited set of plugins. You can find a list here with the versions for each plugin.

In order to run your jekyll site locally in an environment similar to GitHub Pages, you should serve it with plugins disabled, using:

jekyll serve --safe

There are ways to make Jekyll multilingual without plugins, e.g. this implementation based on this article.

If you really want to use plugins, you will have to generate your web pages locally, and push them into your GitHub repository instead of the Jekyll sources.

jekyll plugin not work on github

Github pages does not support plugins. From jekyll's documentation:

GitHub Pages is powered by Jekyll, however all Pages sites are generated using the --safe option to disable custom plugins for security reasons. Unfortunately, this means your plugins won’t work if you’re deploying to GitHub Pages.

The same documentation page also gives you a workaround:

You can still use GitHub Pages to publish your site, but you’ll need to convert the site locally and push the generated static files to your GitHub repository instead of the Jekyll source files.

Generate category page in jekyll targeting github pages

A) You can write custom scripts (shell or Ruby or whatever) to generate files anywhere using file I/O operations. In your above example, instead of adding new pages to the site, you can write out files with front-matter into your project directory. For example (Ruby):

open('somepath/#{category}/index.html', 'w') { |f|
f << "---\n"
f << "key: #{variable}\n"
f << "---\n"
}

And of course, you have to run it locally, before pushing the project to GitHub.


B) Or you can render your Jekyll site locally and push only the _site contents to GitHub. You can then use any plugin you need. You have to create a .nojekyll file in the project root to bypass Jekyll processing on GitHub, and you have to add it to Jekyll's includes as well (in _config.yml):


include:
- .nojekyll

Then you can render the site (jekyll build) and push contents of _site directory to GitHub. You can automate this step with a little shell script.

Instructions for custom GitHub Pages deploy

Considering JamesIves/github-pages-deploy-action can be configured to push your production-ready code into any branch you'd like, an alternative would be for your action to:

  • include a steps: - name: Replace which would replace the text in what was checked out
  • deploy the current checked out (and modified) folder

For the first point, you can use for instance a find-and-replace action, to find foo.com and replace it with bar.com.


Note: since you are using a GitHub Action, you can specify said action as publishing source

You can now deploy to a GitHub Pages site directly from a repository using GitHub Actions, without needing to set up a publishing source.

Using Actions to orchestrate Pages publishing provides many more options for choosing your authoring framework (Next.js, Hugo, Gatsby, Jekyll, NuxtJS or other technologies, and the associated versions thereof) as well as giving you finer control over the publishing process, such as leveraging deployment gates.

We have written several starter workflows for the most common frameworks but also have a “Static“ option if you want to deploy the contents of your repository with no build step.

https://i0.wp.com/user-images.githubusercontent.com/14911070/178842638-51b834d3-6c54-423e-95fa-822f734fa98a.png?ssl=1

  • Documentation
  • Starter workflows (you can modify the static.yml one to include your change)

Which Jekyll plugins are whitelisted by GitHub Pages?

Here's a list with the Jekyll plugins that GitHub Pages support:

https://pages.github.com/versions/



Related Topics



Leave a reply



Submit