jekyll-sitemap 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/.travis.yml +15 -6
- data/History.markdown +19 -0
- data/LICENSE.md +1 -1
- data/README.md +16 -5
- data/jekyll-sitemap.gemspec +1 -1
- data/lib/jekyll/jekyll-sitemap.rb +29 -27
- data/lib/robots.txt +1 -0
- data/lib/sitemap.xml +27 -33
- data/spec/jekyll-sitemap_spec.rb +21 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 545a5dae100fc813cfc730407cc0d3bf3656d008
|
4
|
+
data.tar.gz: 5840efbad8ffbe12ec88479e5b9ba9517055618b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ea2addd12b55152f253503281d60b7453969b7133cc680dffdd471aa80cde89c1782f3cb704707bddb9bd71830249d39616a7ffa4c0c574435ec0d68d456431
|
7
|
+
data.tar.gz: ed2f2f20b26e9445347b3c729b60096930862a33034e6314a30c0323d66a0f716eb94d164c0f518cee54a1c76e451d008815252eeafa11311bd3978000ca6735
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -7,15 +7,16 @@ rvm:
|
|
7
7
|
- 2.2
|
8
8
|
matrix:
|
9
9
|
include:
|
10
|
-
|
11
|
-
|
12
|
-
env: JEKYLL_VERSION=3.3.0
|
10
|
+
- rvm: 2.3.1
|
11
|
+
env: JEKYLL_VERSION=3.3.0
|
13
12
|
env:
|
14
13
|
matrix:
|
15
|
-
|
14
|
+
- JEKYLL_VERSION=3.3
|
16
15
|
branches:
|
17
16
|
only:
|
18
|
-
|
17
|
+
- master
|
18
|
+
git:
|
19
|
+
depth: 1000
|
19
20
|
install:
|
20
21
|
- travis_retry script/bootstrap
|
21
22
|
script: script/cibuild
|
@@ -26,7 +27,15 @@ notifications:
|
|
26
27
|
channels:
|
27
28
|
- irc.freenode.org#jekyll
|
28
29
|
template:
|
29
|
-
-
|
30
|
+
- "%{repository}#%{build_number} %{message} %{build_url}"
|
30
31
|
email:
|
31
32
|
on_success: never
|
32
33
|
on_failure: change
|
34
|
+
deploy:
|
35
|
+
provider: rubygems
|
36
|
+
api_key:
|
37
|
+
secure: O8fGRnM6OJCqC2BlVE1BqYfq5aR19ulpiHhQwRiHbtSCh8H4rYt7FLsuOwSTtRQjhWYRRSpdRt2ilfQ6PY6Jx1UkxZq5zo9QAPQ9tKxiFTm7gBpZAiAgb06eyaMBSzyQ8qe2qccaFI6CiZhsiaGMsdKsWuYpuoPmdLPd7aDyYJs=
|
38
|
+
gem: jekyll-sitemap
|
39
|
+
on:
|
40
|
+
tags: true
|
41
|
+
repo: jekyll/jekyll-sitemap
|
data/History.markdown
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
## 0.13.0 / 2017-01-05
|
2
|
+
|
3
|
+
### Minor Enhancements
|
4
|
+
|
5
|
+
* Add sitemap.xsl if exists (#143)
|
6
|
+
* Add robots.txt when none exists (#146)
|
7
|
+
* Refactor and add sitemap to `site.pages` (#137)
|
8
|
+
* DRY in sitemap.xml (#136)
|
9
|
+
|
10
|
+
### Documentation
|
11
|
+
|
12
|
+
* Fix #134: Rename "Issues" to "Known Issues" (#135)
|
13
|
+
* Fix #104: Add explanation in README for <lastmod> tag (#139)
|
14
|
+
* Update copyright attribution (#149)
|
15
|
+
|
16
|
+
### Development Fixes
|
17
|
+
|
18
|
+
* Travis should do a deep clone (#147)
|
19
|
+
|
1
20
|
## 0.12.0 / 2016-10-06
|
2
21
|
|
3
22
|
### Minor Enhancements
|
data/LICENSE.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c) 2014 GitHub, inc.
|
3
|
+
Copyright (c) 2014-2017, GitHub, inc. and the jekyll-sitemap contributors
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -22,6 +22,17 @@ those other gems if you *want* the sitemap to include the generated
|
|
22
22
|
content, or *before* those other gems if you *don't want* the sitemap to
|
23
23
|
include the generated content from the gems. (Programming is *hard*.)
|
24
24
|
|
25
|
+
Because the sitemap is added to `site.pages`, you may have to modify any
|
26
|
+
templates that iterate through all pages (for example, to build a menu of
|
27
|
+
all of the site's content).
|
28
|
+
|
29
|
+
## `<lastmod>` tag
|
30
|
+
The `<lastmod>` tag in the `sitemap.xml` will reflect by priority:
|
31
|
+
|
32
|
+
1. The modified date of the file as reported by the filesystem if you have `jekyll-last-modified-at` plugin installed (not compatible with Github Pages auto building)
|
33
|
+
2. A personnalised date if you add the variable `last_modified_at:` with a date in the Front Matter
|
34
|
+
3. The creation date of your post (correspondig to the `post.date` variable)
|
35
|
+
|
25
36
|
## Exclusions
|
26
37
|
|
27
38
|
If you would like to exclude specific pages/posts from the sitemap set the
|
@@ -42,14 +53,14 @@ Use `script/console` to load a local IRB console with the Gem.
|
|
42
53
|
1. `script/bootstrap`
|
43
54
|
2. `script/cibuild`
|
44
55
|
|
56
|
+
## Known Issues
|
57
|
+
|
58
|
+
1. If the `sitemap.xml` doesn't generate in the `_site` folder, ensure `_config.yml` doesn't have `safe: true`. That prevents all plugins from working.
|
59
|
+
2. If the `sitemap.xml` doesn't generate in the `_site` folder, ensure that you don't have a sitemap generator plugin in your `_plugin` folder.
|
60
|
+
|
45
61
|
## Contributing
|
46
62
|
|
47
63
|
1. Fork the project
|
48
64
|
2. Create a descriptively named feature branch
|
49
65
|
3. Add your feature
|
50
66
|
4. Submit a pull request
|
51
|
-
|
52
|
-
## Issues
|
53
|
-
|
54
|
-
1. If the `sitemap.xml` doesn't generate in the `_site` folder, ensure `_config.yml` doesn't have `safe: true`. That prevents all plugins from working.
|
55
|
-
2. If the `sitemap.xml` doesn't generate in the `_site` folder, ensure that you don't have a sitemap generator plugin in your `_plugin` folder.
|
data/jekyll-sitemap.gemspec
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "jekyll-sitemap"
|
5
5
|
spec.summary = "Automatically generate a sitemap.xml for your Jekyll site."
|
6
|
-
spec.version = "0.
|
6
|
+
spec.version = "0.13.0"
|
7
7
|
spec.authors = ["GitHub, Inc."]
|
8
8
|
spec.email = "support@github.com"
|
9
9
|
spec.homepage = "https://github.com/jekyll/jekyll-sitemap"
|
@@ -8,13 +8,12 @@ module Jekyll
|
|
8
8
|
# Main plugin action, called by Jekyll-core
|
9
9
|
def generate(site)
|
10
10
|
@site = site
|
11
|
-
unless
|
12
|
-
|
13
|
-
@site.keep_files ||= []
|
14
|
-
@site.keep_files << "sitemap.xml"
|
15
|
-
end
|
11
|
+
@site.pages << sitemap unless file_exists?("sitemap.xml")
|
12
|
+
@site.pages << robots unless file_exists?("robots.txt")
|
16
13
|
end
|
17
14
|
|
15
|
+
private
|
16
|
+
|
18
17
|
INCLUDED_EXTENSIONS = %W(
|
19
18
|
.htm
|
20
19
|
.html
|
@@ -22,46 +21,49 @@ module Jekyll
|
|
22
21
|
.pdf
|
23
22
|
).freeze
|
24
23
|
|
24
|
+
# Matches all whitespace that follows
|
25
|
+
# 1. A '>' followed by a newline or
|
26
|
+
# 2. A '}' which closes a Liquid tag
|
27
|
+
# We will strip all of this whitespace to minify the template
|
28
|
+
MINIFY_REGEX = %r!(?<=>\n|})\s+!
|
29
|
+
|
25
30
|
# Array of all non-jekyll site files with an HTML extension
|
26
31
|
def static_files
|
27
32
|
@site.static_files.select { |file| INCLUDED_EXTENSIONS.include? file.extname }
|
28
33
|
end
|
29
34
|
|
30
35
|
# Path to sitemap.xml template file
|
31
|
-
def source_path
|
32
|
-
File.expand_path "
|
36
|
+
def source_path(file = "sitemap.xml")
|
37
|
+
File.expand_path "../#{file}", File.dirname(__FILE__)
|
33
38
|
end
|
34
39
|
|
35
40
|
# Destination for sitemap.xml file within the site source directory
|
36
|
-
def destination_path
|
37
|
-
|
38
|
-
@site.in_dest_dir("sitemap.xml")
|
39
|
-
else
|
40
|
-
Jekyll.sanitized_path(@site.dest, "sitemap.xml")
|
41
|
-
end
|
41
|
+
def destination_path(file = "sitemap.xml")
|
42
|
+
@site.in_dest_dir(file)
|
42
43
|
end
|
43
44
|
|
44
|
-
|
45
|
-
def write
|
46
|
-
FileUtils.mkdir_p File.dirname(destination_path)
|
47
|
-
File.open(destination_path, "w") { |f| f.write(sitemap_content) }
|
48
|
-
end
|
49
|
-
|
50
|
-
def sitemap_content
|
45
|
+
def sitemap
|
51
46
|
site_map = PageWithoutAFile.new(@site, File.dirname(__FILE__), "", "sitemap.xml")
|
52
|
-
site_map.content = File.read(source_path)
|
47
|
+
site_map.content = File.read(source_path).gsub(MINIFY_REGEX, "")
|
53
48
|
site_map.data["layout"] = nil
|
54
49
|
site_map.data["static_files"] = static_files.map(&:to_liquid)
|
55
|
-
site_map.
|
56
|
-
site_map
|
50
|
+
site_map.data["xsl"] = file_exists?("sitemap.xsl")
|
51
|
+
site_map
|
52
|
+
end
|
53
|
+
|
54
|
+
def robots
|
55
|
+
robots = PageWithoutAFile.new(@site, File.dirname(__FILE__), "", "robots.txt")
|
56
|
+
robots.content = File.read(source_path("robots.txt"))
|
57
|
+
robots.data["layout"] = nil
|
58
|
+
robots
|
57
59
|
end
|
58
60
|
|
59
|
-
# Checks if a
|
60
|
-
def
|
61
|
+
# Checks if a file already exists in the site source
|
62
|
+
def file_exists?(file_path)
|
61
63
|
if @site.respond_to?(:in_source_dir)
|
62
|
-
File.exist? @site.in_source_dir(
|
64
|
+
File.exist? @site.in_source_dir(file_path)
|
63
65
|
else
|
64
|
-
File.exist? Jekyll.sanitized_path(@site.source,
|
66
|
+
File.exist? Jekyll.sanitized_path(@site.source, file_path)
|
65
67
|
end
|
66
68
|
end
|
67
69
|
end
|
data/lib/robots.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Sitemap: {{ "sitemap.xml" | absolute_url }}
|
data/lib/sitemap.xml
CHANGED
@@ -1,41 +1,35 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
{% if page.xsl %}
|
3
|
+
<?xml-stylesheet type="text/xsl" href="{{ "/sitemap.xsl" | absolute_url }}"?>
|
4
|
+
{% endif %}
|
2
5
|
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
3
|
-
{%
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
{%
|
17
|
-
{% for
|
18
|
-
{% for doc in collection.last.docs %}{% unless doc.sitemap == false %}
|
19
|
-
<url>
|
20
|
-
<loc>{{ doc.url | replace:'/index.html','/' | absolute_url }}</loc>
|
21
|
-
{% if doc.last_modified_at %}
|
22
|
-
<lastmod>{{ doc.last_modified_at | date_to_xmlschema }}</lastmod>
|
23
|
-
{% endif %}
|
24
|
-
</url>
|
25
|
-
{% endunless %}{% endfor %}
|
26
|
-
{% for doc in collection.docs %}{% unless doc.sitemap == false %}
|
6
|
+
{% assign collections = site.collections | where_exp:'collection','collection.output != false' %}
|
7
|
+
{% for collection in collections %}
|
8
|
+
{% assign docs = collection.docs | where_exp:'doc','doc.sitemap != false' %}
|
9
|
+
{% for doc in docs %}
|
10
|
+
<url>
|
11
|
+
<loc>{{ doc.url | replace:'/index.html','/' | absolute_url }}</loc>
|
12
|
+
{% if doc.last_modified_at or doc.date %}
|
13
|
+
<lastmod>{{ doc.last_modified_at | default: doc.date | date_to_xmlschema }}</lastmod>
|
14
|
+
{% endif %}
|
15
|
+
</url>
|
16
|
+
{% endfor %}
|
17
|
+
{% endfor %}
|
18
|
+
|
19
|
+
{% assign pages = site.html_pages | where_exp:'doc','doc.sitemap != false' %}
|
20
|
+
{% for page in pages %}
|
27
21
|
<url>
|
28
|
-
<loc>{{
|
29
|
-
{% if
|
30
|
-
|
22
|
+
<loc>{{ page.url | replace:'/index.html','/' | absolute_url }}</loc>
|
23
|
+
{% if page.last_modified_at %}
|
24
|
+
<lastmod>{{ page.last_modified_at | date_to_xmlschema }}</lastmod>
|
31
25
|
{% endif %}
|
32
26
|
</url>
|
33
|
-
{%
|
34
|
-
|
27
|
+
{% endfor %}
|
28
|
+
|
35
29
|
{% for file in page.static_files %}
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
30
|
+
<url>
|
31
|
+
<loc>{{ file.path | absolute_url }}</loc>
|
32
|
+
<lastmod>{{ file.modified_time | date_to_xmlschema }}</lastmod>
|
33
|
+
</url>
|
40
34
|
{% endfor %}
|
41
35
|
</urlset>
|
data/spec/jekyll-sitemap_spec.rb
CHANGED
@@ -136,6 +136,11 @@ describe(Jekyll::JekyllSitemap) do
|
|
136
136
|
expect(contents).to match /<loc>http:\/\/example\.org\/bass\/2014\/03\/02\/march-the-second\.html<\/loc>/
|
137
137
|
expect(contents).to match /<loc>http:\/\/example\.org\/bass\/2013\/12\/12\/dec-the-second\.html<\/loc>/
|
138
138
|
end
|
139
|
+
|
140
|
+
it "adds baseurl to robots.txt" do
|
141
|
+
content = File.read(dest_dir("robots.txt"))
|
142
|
+
expect(content).to match("Sitemap: http://example.org/bass/sitemap.xml")
|
143
|
+
end
|
139
144
|
end
|
140
145
|
|
141
146
|
context "with urls that needs URI encoding" do
|
@@ -155,5 +160,21 @@ describe(Jekyll::JekyllSitemap) do
|
|
155
160
|
it "does not double-escape urls" do
|
156
161
|
expect(contents).to_not match /%25/
|
157
162
|
end
|
163
|
+
|
164
|
+
context "readme" do
|
165
|
+
let(:contents) { File.read(dest_dir("robots.txt")) }
|
166
|
+
|
167
|
+
it "has no layout" do
|
168
|
+
expect(contents).not_to match(/\ATHIS IS MY LAYOUT/)
|
169
|
+
end
|
170
|
+
|
171
|
+
it "creates a sitemap.xml file" do
|
172
|
+
expect(File.exist?(dest_dir("robots.txt"))).to be_truthy
|
173
|
+
end
|
174
|
+
|
175
|
+
it "renders liquid" do
|
176
|
+
expect(contents).to match("Sitemap: http://xn--mlaut-jva.example.org/sitemap.xml")
|
177
|
+
end
|
178
|
+
end
|
158
179
|
end
|
159
180
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-sitemap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -113,6 +113,7 @@ files:
|
|
113
113
|
- lib/jekyll-sitemap.rb
|
114
114
|
- lib/jekyll/jekyll-sitemap.rb
|
115
115
|
- lib/jekyll/page_without_a_file.rb
|
116
|
+
- lib/robots.txt
|
116
117
|
- lib/sitemap.xml
|
117
118
|
- script/bootstrap
|
118
119
|
- script/cibuild
|
@@ -167,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
168
|
version: '0'
|
168
169
|
requirements: []
|
169
170
|
rubyforge_project:
|
170
|
-
rubygems_version: 2.6.
|
171
|
+
rubygems_version: 2.6.8
|
171
172
|
signing_key:
|
172
173
|
specification_version: 4
|
173
174
|
summary: Automatically generate a sitemap.xml for your Jekyll site.
|