jekyll-minifier 0.1.6 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/README.md +23 -3
- data/jekyll-minifier.gemspec +7 -7
- data/lib/jekyll-minifier.rb +83 -37
- data/lib/jekyll-minifier/version.rb +1 -1
- data/spec/fixtures/_config.yml +21 -16
- metadata +21 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 117cf6a5e022dd3c282ac194330042d5929e3ef4653e7c5da400b2feb6c34b7f
|
4
|
+
data.tar.gz: 36d20a781a57b322bfedbef53b22e8051515099e0555482a899513c0ff7ec593
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22d694decf4e5c470fe9c65723b29d45837cb1061261feabe6bbff3ce30bfc512e0c414d63c43a5b5d21cd7636a0f693d40e6b64eee6dd568fbbf2ef2783b097
|
7
|
+
data.tar.gz: b6fe3b3590df38637c5a7f4dc806c04f445a4b413d9c5fd2ccde4cc76423f78dbaa91000a94f38f843a8dd0c59b206835a65c850302a67895ec45e3ee95006e2
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -8,21 +8,26 @@ This was created due to the previous minifier (jekyll-press) not being CSS3 comp
|
|
8
8
|
|
9
9
|
Note: this is my first ever gem, I'm learning, so feedback is much appreciated.
|
10
10
|
|
11
|
+
** This minifier now only runs when JEKYLL_ENV="production" is set in the enviornment **
|
12
|
+
|
11
13
|
Easy to use, just install the jekyll-minifier gem:
|
12
14
|
|
13
15
|
<pre><code>gem install jekyll-minifier</code></pre>
|
14
16
|
|
15
|
-
Then add this to your _config.yml:
|
17
|
+
Then add this to your \_config.yml:
|
16
18
|
|
17
|
-
<pre><code>
|
19
|
+
<pre><code>plugins:
|
18
20
|
- jekyll-minifier
|
19
21
|
</code></pre>
|
20
22
|
|
21
23
|
Optionally, you can also add exclusions using:
|
24
|
+
|
22
25
|
<pre><code>jekyll-minifier:
|
23
26
|
exclude: 'atom.xml' # Exclude files from processing - file name, glob pattern or array of file names and glob patterns
|
24
27
|
</code></pre>
|
25
|
-
|
28
|
+
|
29
|
+
and toggle features and settings using:
|
30
|
+
|
26
31
|
<pre><code>jekyll-minifier:
|
27
32
|
preserve_php: true # Default: false
|
28
33
|
remove_spaces_inside_tags: true # Default: true
|
@@ -44,5 +49,20 @@ and toggle htmlcompressor features using:
|
|
44
49
|
preserve_line_breaks: false # Default: false
|
45
50
|
simple_boolean_attributes: false # Default: false
|
46
51
|
compress_js_templates: false # Default: false
|
52
|
+
preserve_patterns: # Default: (empty)
|
53
|
+
uglifier_args: # Default: (empty)
|
47
54
|
</code></pre>
|
48
55
|
|
56
|
+
js_args can be found in the the uglifier documentation at listed below
|
57
|
+
|
58
|
+
Note: es6 has been implemented as experimental only via the upstream uglifier package.
|
59
|
+
See https://github.com/lautis/uglifier for more information.
|
60
|
+
|
61
|
+
To enable es6 syntax use:
|
62
|
+
|
63
|
+
<pre><code>
|
64
|
+
jekyll-minifier:
|
65
|
+
uglifier_args:
|
66
|
+
harmony: true
|
67
|
+
|
68
|
+
</code></pre>
|
data/jekyll-minifier.gemspec
CHANGED
@@ -26,13 +26,13 @@ Gem::Specification.new do |gem|
|
|
26
26
|
gem.version = Jekyll::Minifier::VERSION
|
27
27
|
end
|
28
28
|
|
29
|
-
gem.add_dependency "jekyll", "
|
30
|
-
gem.add_dependency "uglifier", "~>
|
31
|
-
gem.add_dependency "htmlcompressor", "~> 0.
|
29
|
+
gem.add_dependency "jekyll", ">= 3.5"
|
30
|
+
gem.add_dependency "uglifier", "~> 4.1"
|
31
|
+
gem.add_dependency "htmlcompressor", "~> 0.4"
|
32
32
|
gem.add_dependency "cssminify2", "~> 2.0"
|
33
33
|
|
34
|
-
gem.add_development_dependency "rake", "~>
|
35
|
-
gem.add_development_dependency "rspec", "~>
|
36
|
-
gem.add_development_dependency "jekyll-paginate"
|
37
|
-
gem.add_development_dependency "redcarpet"
|
34
|
+
gem.add_development_dependency "rake", "~> 12.3"
|
35
|
+
gem.add_development_dependency "rspec", "~> 3.8"
|
36
|
+
gem.add_development_dependency "jekyll-paginate", "~> 1.1"
|
37
|
+
gem.add_development_dependency "redcarpet", "~> 3.4"
|
38
38
|
end
|
data/lib/jekyll-minifier.rb
CHANGED
@@ -31,50 +31,96 @@ module Jekyll
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def output_html(path, content)
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
34
|
+
if ( ENV['JEKYLL_ENV'] == "production" )
|
35
|
+
html_args = { remove_comments: true, compress_css: true, compress_javascript: true, preserve_patterns: [] }
|
36
|
+
js_args = {}
|
37
|
+
|
38
|
+
opts = @site.config['jekyll-minifier']
|
39
|
+
if ( !opts.nil? )
|
40
|
+
# Javascript Arguments
|
41
|
+
js_args += opts[:uglifier_args] if opts.has_key?(:uglifier_args)
|
42
|
+
|
43
|
+
# HTML Arguments
|
44
|
+
html_args[:remove_spaces_inside_tags] = opts['remove_spaces_inside_tags'] if opts.has_key?('remove_spaces_inside_tags')
|
45
|
+
html_args[:remove_multi_spaces] = opts['remove_multi_spaces'] if opts.has_key?('remove_multi_spaces')
|
46
|
+
html_args[:remove_comments] = opts['remove_comments'] if opts.has_key?('remove_comments')
|
47
|
+
html_args[:remove_intertag_spaces] = opts['remove_intertag_spaces'] if opts.has_key?('remove_intertag_spaces')
|
48
|
+
html_args[:remove_quotes] = opts['remove_quotes'] if opts.has_key?('remove_quotes')
|
49
|
+
html_args[:compress_css] = opts['compress_css'] if opts.has_key?('compress_css')
|
50
|
+
html_args[:compress_javascript] = opts['compress_javascript'] if opts.has_key?('compress_javascript')
|
51
|
+
html_args[:simple_doctype] = opts['simple_doctype'] if opts.has_key?('simple_doctype')
|
52
|
+
html_args[:remove_script_attributes] = opts['remove_script_attributes'] if opts.has_key?('remove_script_attributes')
|
53
|
+
html_args[:remove_style_attributes] = opts['remove_style_attributes'] if opts.has_key?('remove_style_attributes')
|
54
|
+
html_args[:remove_link_attributes] = opts['remove_link_attributes'] if opts.has_key?('remove_link_attributes')
|
55
|
+
html_args[:remove_form_attributes] = opts['remove_form_attributes'] if opts.has_key?('remove_form_attributes')
|
56
|
+
html_args[:remove_input_attributes] = opts['remove_input_attributes'] if opts.has_key?('remove_input_attributes')
|
57
|
+
html_args[:remove_javascript_protocol] = opts['remove_javascript_protocol'] if opts.has_key?('remove_javascript_protocol')
|
58
|
+
html_args[:remove_http_protocol] = opts['remove_http_protocol'] if opts.has_key?('remove_http_protocol')
|
59
|
+
html_args[:remove_https_protocol] = opts['remove_https_protocol'] if opts.has_key?('remove_https_protocol')
|
60
|
+
html_args[:preserve_line_breaks] = opts['preserve_line_breaks'] if opts.has_key?('preserve_line_breaks')
|
61
|
+
html_args[:simple_boolean_attributes] = opts['simple_boolean_attributes'] if opts.has_key?('simple_boolean_attributes')
|
62
|
+
html_args[:compress_js_templates] = opts['compress_js_templates'] if opts.has_key?('compress_js_templates')
|
63
|
+
html_args[:preserve_patterns] += [/<\?php.*?\?>/im] if opts['preserve_php'] == true
|
64
|
+
html_args[:preserve_patterns] += opts[:preserve_patterns].map { |pattern| Regexp.new(pattern)} if opts.has_key?(:preserve_patterns)
|
65
|
+
end
|
66
|
+
|
67
|
+
html_args[:css_compressor] = CSSminify2.new()
|
68
|
+
|
69
|
+
if ( !js_args.nil? )
|
70
|
+
html_args[:javascript_compressor] = Uglifier.new(js_args)
|
71
|
+
else
|
72
|
+
html_args[:javascript_compressor] = Uglifier.new()
|
73
|
+
end
|
65
74
|
|
66
|
-
|
67
|
-
|
75
|
+
compressor = HtmlCompressor::Compressor.new(html_args)
|
76
|
+
output_file(path, compressor.compress(content))
|
77
|
+
else
|
78
|
+
output_file(path, content)
|
79
|
+
end
|
68
80
|
end
|
69
81
|
|
70
82
|
def output_js(path, content)
|
71
|
-
|
72
|
-
|
83
|
+
if ( ENV['JEKYLL_ENV'] == "production" )
|
84
|
+
opts = @site.config['jekyll-minifier']
|
85
|
+
compress = true
|
86
|
+
if ( !opts.nil? )
|
87
|
+
compress = opts['compress_javascript'] if opts.has_key?('compress_javascript')
|
88
|
+
js_args += opts[:js_args] if opts.has_key?(:js_args)
|
89
|
+
end
|
90
|
+
|
91
|
+
if ( compress )
|
92
|
+
if ( !js_args.nil? )
|
93
|
+
compressor = Uglifier.new(js_args)
|
94
|
+
else
|
95
|
+
compressor = Uglifier.new()
|
96
|
+
end
|
97
|
+
|
98
|
+
output_file(path, compressed.compile(content))
|
99
|
+
else
|
100
|
+
output_file(path, content)
|
101
|
+
end
|
102
|
+
else
|
103
|
+
output_file(path, content)
|
104
|
+
end
|
73
105
|
end
|
74
106
|
|
75
107
|
def output_css(path, content)
|
76
|
-
|
77
|
-
|
108
|
+
if ( ENV['JEKYLL_ENV'] == "production" )
|
109
|
+
opts = @site.config['jekyll-minifier']
|
110
|
+
compress = true
|
111
|
+
if ( !opts.nil? )
|
112
|
+
compress = opts['compress_css'] if opts.has_key?('compress_css')
|
113
|
+
end
|
114
|
+
if ( compress )
|
115
|
+
compressor = CSSminify2.new()
|
116
|
+
output_file(path, compressor.compress(content))
|
117
|
+
else
|
118
|
+
output_file(path, content)
|
119
|
+
end
|
120
|
+
else
|
121
|
+
output_file(path, content)
|
122
|
+
end
|
123
|
+
|
78
124
|
end
|
79
125
|
|
80
126
|
private
|
data/spec/fixtures/_config.yml
CHANGED
@@ -1,19 +1,24 @@
|
|
1
|
-
markdown:
|
2
|
-
highlighter:
|
3
|
-
title:
|
4
|
-
tagline:
|
5
|
-
description:
|
6
|
-
url:
|
7
|
-
paginate:
|
8
|
-
category_dir:
|
9
|
-
category_title_prefix:
|
10
|
-
permalink:
|
11
|
-
timezone:
|
1
|
+
markdown: redcarpet
|
2
|
+
highlighter: pygments
|
3
|
+
title: Example.com
|
4
|
+
tagline: "Example!"
|
5
|
+
description: ""
|
6
|
+
url: https://example.com
|
7
|
+
paginate: 10
|
8
|
+
category_dir: /
|
9
|
+
category_title_prefix: ""
|
10
|
+
permalink: :categories/:title.html
|
11
|
+
timezone: Australia/Perth
|
12
12
|
author:
|
13
|
-
|
14
|
-
|
13
|
+
name: "Example"
|
14
|
+
email: "example@example.com"
|
15
15
|
menu:
|
16
|
-
|
16
|
+
- {
|
17
|
+
url: "https://www.github.com/example/",
|
18
|
+
name: "GitHub",
|
19
|
+
nofollow: true,
|
20
|
+
newwindow: true,
|
21
|
+
}
|
17
22
|
plugins:
|
18
|
-
|
19
|
-
|
23
|
+
- jekyll-minifier
|
24
|
+
- jekyll-paginate
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-minifier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DigitalSparky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.5'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '4.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '4.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: htmlcompressor
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.4'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
54
|
+
version: '0.4'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: cssminify2
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,56 +72,56 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
75
|
+
version: '12.3'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
82
|
+
version: '12.3'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '3.8'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '3.8'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: jekyll-paginate
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '1.1'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '1.1'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: redcarpet
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '3.4'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
124
|
+
version: '3.4'
|
125
125
|
description: Jekyll Minifier using htmlcompressor for html, uglifier for js and css
|
126
126
|
email:
|
127
127
|
- matthew@spurrier.com.au
|
@@ -174,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
174
174
|
version: '0'
|
175
175
|
requirements: []
|
176
176
|
rubyforge_project:
|
177
|
-
rubygems_version: 2.7.
|
177
|
+
rubygems_version: 2.7.8
|
178
178
|
signing_key:
|
179
179
|
specification_version: 2
|
180
180
|
summary: Jekyll Minifier for html, css, and javascript
|