Jekyll category for normal assets - jekyll

Using Jekyll 2.5.3 I have a collection "_assets" where I would like to store things like:
.htaccess
favicon.ico
apple-touch-icon-*.png
I am using this in _config.yml:
collections:
assets:
output: true
permalink: "/:path.html"
And the intention is to have these items published to the root directory. However, they are actually being published to a "/assets/" directory.
How can I correct this configuration to output to the intended root directory?

Related

Hugo site, deployed to public/ directory in html, gives weird results

I have a Hugo site with lots of folders and subfolders, containing both _index.md files and many others. It uses the docsy theme.
Running hugo server displays the site correctly in the browser at localhost:1313
When I run hugo or hugo -D to get the same pages as HTML files on the disk, and I get
a set of folders...
... containing only index.html and index.xml files,
but no other files. All the other files are missing.
links look like the raw .md file (example: [VPAT](https://docs.axway.com/bundle/AccessibilityVPATS_allOS_en_HTML5/page/Content/accessibility.htm)
The index.html files are unstyled, unlike the pages generated by the hugo server command.
I don't see how to use the index.xml files.
Here is an example of the files and folders produced by the hugo command:
public/
index.html
index.xml
docs/
index.html
index.xml
admin_intro/
index.html
index.xml
troubleshooting/
index.html
index.xml
...
Here is what the .md file structure looks like
content/
en/
_index.html
search.md
docs/
_index.md
admin_intro/
_index.md
amdin_page_1.md
amdin_page_2.md
amdin_page_3.md
troubleshooting/
_index.md
ts_page_1.md
ts_page_2.md
ts_page_3.md
...
It looks like maybe your postcss process isn't running correctly. I had this problem after upgrading Hugo and Docsy
The postcss process isn't used in the dev mod (hugo server) but it is in production (hugo) so you will unfortunately get different results.
Try running hugo locally with the --debug flag and see if any errors show up.

Configuration to tell Jekyll to avoid to apply permalink rules to files that are not markdown

After upgrading from Jekyll 3.8 to 3.9, 4.0 or 4.1, image files in collections are processed with permalink rules.
I have this configuration
collections:
arch:
output: true
permalink: /:collection/:path.html
With these files
image.jpeg
file.md
In 3.8 the output files are:
image.jpeg
file.html
After 3.8 the output files are:
image.html.jpeg
file.html
Is there a configuration to tell Jekyll to avoid to apply permalink rules to files that are not markdown?
Try removing the .html extension on the permalink since it is automatically generated.
collections:
arch:
output: true
permalink: /:collection/:path

Jekyll add file to _site without extension

In Netlify to redirect a default Netlify subdomain to a primary domain I need to add a _redirects file to the root of my _site folder.
In the root of my Jekyll project I've added a file named _redirects (no extension), but when my _site is generated it ignored the file and nothing is created, no file, no folder and page. How do I move a file with no extension into my _site directory?
I've added numerous static files with extensions without an issue, but I'm not sure how to accomplish this one.
From Netlify redirects documentation :
... (For Jekyll, this requires adding an include parameter to _config.yml.)
include:
- ...
- _redirects

How do I redirect an old Netlify + Jekyll site address, to the new address?

I created a Jekyll site, hosted at Netlify, at old.address.com. Now I want to redirect to new.address.com. But the Netlify docs doesn't seem to work or I don't understand the docs. This is what I did:
I added, to _config.yml: (because Netlify says Jekyll excludes '_...' files)
include:
- _redirects
And I added a _redirects file. I just copy-pasted Netlify's generated instructions into that file, this is the content:
# Redirect domain aliases to primary domain
https://jekyll-comments.demo.ed.community/* https://jekyll-demo.talkyard.io/:splat 301!
http://jekyll-comments.demo.ed.community/* https://jekyll-demo.talkyard.io/:splat 301!
https://jekyll.demo.talkyard.io/* https://jekyll-demo.talkyard.io/:splat 301!
http://jekyll.demo.talkyard.io/* https://jekyll-demo.talkyard.io/:splat 301!
And this has no effect. What's the problem / what am I doing wrong?
This is how the directory looks like:
$ ls -1
404.html
about.md
_config.yml
Gemfile
_includes
index.md
_layouts
_posts
_redirects <—— added as per Netlify's instructions
_sass
_site
$ ls -1 _posts/
2018-01-01-like-about-jekyll.markdown
2018-01-02-installation-instructions.markdown
2018-01-02-kind-creatures.markdown
The config file is just the default one:
title: ...
email: ...
baseurl: "" # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. http://example.com
twitter_username: ...
github_username: ...
# Build settings
markdown: kramdown
theme: minima
plugins:
- jekyll-feed
talkyard_comments_server_url: ...
include:
- _redirects
Please note that although there are fairly many details above, it's all just various default stuff. So it's not specific to my problem. It should apply to all new Jekyll sites.
Disclaimer: I work for Netlify
We have a specific section on this in our documentation: https://www.netlify.com/docs/redirects/#handling-hostnames-and-protocols-differently
...and your snippet should work since it follows those conventions.
The only prerequisites to make that work are:
1) that you have your site configured in our UI to answer to ALL of those names - so:
jekyll-comments.demo.ed.community
jekyll-demo.talkyard.io
jekyll.demo.talkyard.io
2) and that all names are set up the same in DNS (CNAME to yournetlifysitename.netlify.com)
The only way to add "extra" names to your Netlify configuration is as domain aliases, which are configured in the Domain settings panel right next to your "main" custom domain.
Since your _redirects looks correct to me, if you have the prerequisites configured as suggested, the most likely failure mode is that you don't end up with your redirects actually applied for some reason (usually - they didn't get deployed because they didn't exist in a file called _redirects, in your publish folder, after the build), but your include in the jekyll config should allow that file to persist in that location. That jekyll config is the "right" way to do it but for other site generators, we sometimes advise people to copy the redirects into place after build: jekyll build && cp netlify_redirects.txt _site/_redirects
You can download whatever files are in your deploy to examine their "final state" via this tiny icon from any successful deploy logs page:
From a quick look at your site configuration, they appear to be deployed and working:
$ curl -v https://jekyll-comments.demo.ed.community/ -o /dev/null
* Connected to jekyll-comments.demo.ed.community (35.199.180.1) port 443 (#0)
[...]
< HTTP/1.1 301 Moved Permanently
[...]
< Location: https://jekyll-demo.talkyard.io/
So I guess the next question is...how are you testing?

adding yeoman to github pages blog

I had a blog running at morenoh149.github.io I attempted to add yeoman to my workflow using jekyllrb generator. I followed the instructions by creating a new yeoman project, and copying over all the generated files and structure to my blog. But now github pages isn't picking up the blog. https://github.com/morenoh149/morenoh149.github.io
Anyone know how github pages works? the docs are sparse.
I changed the source in my yml file to app/ as well. So now when I run jekyll locally it works. But when I push to github pages it's not.
_config.yml
# Jekyll configuration precedence:
# 1. Gruntfile task
# 2. config.build.yml
# 3. config.yml
name: morenoh149.blog.yeoman
url: morenoh149.github.io
description: Harry Moreno has a blog
author:
name: Harry Moreno
email: morenoh149#gmail.com
# Grunt handles images and assets.
exclude: ['img', 'css', 'js', 'fonts',
'**.png', '**.jpg', '**.jpeg', '**.gif', '**.webp', '**.svg', '**.ico']
include: ['.htaccess']
source: app
# _config.build.yml sets future and show_drafts to false on `grunt build`
future: true
show_drafts: true
# Markdown library
markdown: redcarpet
# extensions: ['fenced_code_blocks', 'smart']
pygments: true
It looks like GitHub Pages is serving files from your site (for instance, http://morenoh149.github.io/app/ is an html file with a single paragraph element) but it's not serving them properly with all the Jekyll magic.
It turns out that GitHub Pages will override the source setting in the config file. This means that while you've specified source: app, it's looking at your top-level directory for content.
The solution is to move the contents of your app directory into your top-level directory.