jekyll-brotli 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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