jekyll-brotli 2.1.0 → 2.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 30fe005662022fcb3fc0e15c3b8c6e6d3ca7bb4050ef1ab98044840bbc74b4c8
4
- data.tar.gz: 3ae490ae5b18d874f42447a103c9735c8f2dd0d950015697f5ae9f38e0053c02
3
+ metadata.gz: c01d2370e43402384f97385984ba919730c8b35957ba7eca72d29c3d0806dd1a
4
+ data.tar.gz: 66cff3b96e22a3bc0b20a60872c6f97d67bd335e0b427352b014bb0f581d5e3b
5
5
  SHA512:
6
- metadata.gz: b1a404deb1999f4600f50ad54cf4d16910e6caa9442d11fb32248ef46e9db8cd63f0cc626e45057791afae42f96aea93e02deed8a6203de1353adbadee641064
7
- data.tar.gz: 5d2f3f39333970454c33fe7dc62a88aa989305342f3f0e183f751522b5379eea1d8637dabdd4c7db795778da2c50b4f99a835c02e92352f86679b721333b69b6
6
+ metadata.gz: 1913dccb152cf9e6877fb70107af32bd078c19baf9ef2f947a727c8b2b4215430dd8ad9246baaa8162a35636d06703bc29ccfc182578d12c5eb85585376ae09e
7
+ data.tar.gz: 63e03d5ee66bfa73444917abafefcb9f3bd01344502b1f5769d5bf65843c8692769eb4b069d05d4cd53452917749ddb0d4d7ff7dd2db652ebbbd4483b89d5804
data/CHANGELOG.md CHANGED
@@ -1,10 +1,14 @@
1
1
  # Changelog
2
2
 
3
- ## Ongoing [☰](https://github.com/philnash/jekyll-brotli/compare/v2.0.0...master)
3
+ ## Ongoing [☰](https://github.com/philnash/jekyll-brotli/compare/v2.2.0...master)
4
4
 
5
- ...
5
+ ## 2.2.0 (2019-12-31) [☰](https://github.com/philnash/jekyll-brotli/compare/v2.1.0...v2.2.0)
6
6
 
7
- ## 2.1.0 (2018-11-24) [☰](https://github.com/philnash/jekyll-brotli/compare/v2.0.0...v2.1.0)
7
+ ### Changed
8
+
9
+ - - Doesn't regenerate files that haven't changed in incremental builds (thanks [@fauno](https://github.com/fauno))
10
+
11
+ ## 2.1.0 (2019-08-26) [☰](https://github.com/philnash/jekyll-brotli/compare/v2.0.0...v2.1.0)
8
12
 
9
13
  ### Changed
10
14
 
data/lib/jekyll/brotli.rb CHANGED
@@ -19,6 +19,12 @@ Jekyll::Hooks.register :site, :post_write do |site|
19
19
  Jekyll::Brotli::Compressor.compress_site(site) if Jekyll.env == 'production'
20
20
  end
21
21
 
22
+ Jekyll::Hooks.register :clean, :on_obsolete do |obsolete|
23
+ obsolete.delete_if do |path|
24
+ path.end_with? '.br'
25
+ end
26
+ end
27
+
22
28
  begin
23
29
  require 'jekyll-assets'
24
30
 
@@ -25,6 +25,8 @@ module Jekyll
25
25
  # @return void
26
26
  def self.compress_site(site)
27
27
  site.each_site_file do |file|
28
+ next unless regenerate? file.destination(site.dest), site
29
+
28
30
  compress_file(
29
31
  file.destination(site.dest),
30
32
  compressable_extensions(site)
@@ -47,8 +49,12 @@ module Jekyll
47
49
  # @return void
48
50
  def self.compress_directory(dir, site)
49
51
  extensions = compressable_extensions(site).join(',')
50
- files = Dir.glob(dir + "**/*{#{extensions}}")
51
- files.each { |file| compress_file(file, compressable_extensions(site)) }
52
+ files = Dir.glob(dir + "/**/*{#{extensions}}")
53
+ files.each do |file|
54
+ next unless regenerate? file, site
55
+
56
+ compress_file(file, compressable_extensions(site))
57
+ end
52
58
  end
53
59
 
54
60
  ##
@@ -67,8 +73,11 @@ module Jekyll
67
73
  # @return void
68
74
  def self.compress_file(file_name, extensions)
69
75
  return unless extensions.include?(File.extname(file_name))
70
- compressed = "#{file_name}.br"
76
+ compressed = compressed(file_name)
71
77
  contents = ::Brotli.deflate(File.read(file_name), quality: 11)
78
+
79
+ Jekyll.logger.debug "Brotli: #{compressed}"
80
+
72
81
  File.open(compressed, "w+") do |file|
73
82
  file << contents
74
83
  end
@@ -77,9 +86,23 @@ module Jekyll
77
86
 
78
87
  private
79
88
 
89
+ def self.compressed(file_name)
90
+ "#{file_name}.br"
91
+ end
92
+
80
93
  def self.compressable_extensions(site)
81
94
  site.config['brotli'] && site.config['brotli']['extensions'] || Jekyll::Brotli::DEFAULT_CONFIG['extensions']
82
95
  end
96
+
97
+ # Compresses the file if the site is built incrementally and the
98
+ # source was modified or the compressed file doesn't exist
99
+ def self.regenerate?(file, site)
100
+ compressed = compressed(file)
101
+
102
+ return true unless File.exist? compressed
103
+
104
+ File.mtime(file) > File.mtime(compressed)
105
+ end
83
106
  end
84
107
  end
85
- end
108
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Brotli
5
- VERSION = "2.1.0"
5
+ VERSION = "2.2.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-brotli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phil Nash
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-26 00:00:00.000000000 Z
11
+ date: 2019-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  - !ruby/object:Gem::Version
151
151
  version: '0'
152
152
  requirements: []
153
- rubygems_version: 3.0.3
153
+ rubygems_version: 3.0.1
154
154
  signing_key:
155
155
  specification_version: 4
156
156
  summary: Generate brotli compressed assets and files for your Jekyll site at build