jekyll-minibundle 1.4.0 → 1.4.1
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/CHANGELOG.md +4 -0
- data/jekyll-minibundle.gemspec +12 -5
- data/lib/jekyll/minibundle/asset_file_registry.rb +49 -0
- data/lib/jekyll/minibundle/version.rb +1 -1
- data/test/fixture/site/_config.yml +1 -0
- data/test/fixture/site/_layouts/default.html +28 -0
- data/test/fixture/site/about.html +4 -0
- data/test/fixture/site/assets/styles/reset.css +2 -0
- data/test/integration/static_files_as_asset_sources_test.rb +55 -0
- data/test/unit/asset_file_registry_test.rb +50 -0
- metadata +19 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53e069cbc2278b08d8cf93fc9598882f24a56b7f
|
4
|
+
data.tar.gz: 3fa82515fa89f2d632c5428f29adb233663e5f8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 158f82d5e10ea274b76d353b159fbed84b81d12c82cbd6339d3829056edda0adb473f7700336c24e18c765b0f632797e0227ce0e5ae488f01383989a4022f90c
|
7
|
+
data.tar.gz: 8380c680bda3674dfd760c32aa6b5cbb69f7d9a88ca9b1825d97f20c7d03f1be9bb2bf2334e418fcf1ab01be5fd2188881c3b145d917f73d40a5017cc3f6276a
|
data/CHANGELOG.md
CHANGED
data/jekyll-minibundle.gemspec
CHANGED
@@ -11,10 +11,10 @@ Gem::Specification.new do |s|
|
|
11
11
|
|
12
12
|
s.description = <<-END
|
13
13
|
A straightforward asset bundling plugin for Jekyll, utilizing external
|
14
|
-
minification tool of your choice.
|
15
|
-
bundling and asset fingerprinting with MD5 digest for cache
|
16
|
-
other runtime dependencies besides the
|
17
|
-
other gems).
|
14
|
+
minification tool of your choice. It provides asset concatenation for
|
15
|
+
bundling and asset fingerprinting with MD5 digest for cache
|
16
|
+
busting. There are no other runtime dependencies besides the
|
17
|
+
minification tool (not even other gems).
|
18
18
|
END
|
19
19
|
|
20
20
|
s.files = %w{
|
@@ -24,9 +24,11 @@ other gems).
|
|
24
24
|
RELEASING.txt
|
25
25
|
Rakefile
|
26
26
|
jekyll-minibundle.gemspec
|
27
|
+
lib/jekyll/minibundle.rb
|
27
28
|
lib/jekyll/minibundle/asset_bundle.rb
|
28
29
|
lib/jekyll/minibundle/asset_file_operations.rb
|
29
30
|
lib/jekyll/minibundle/asset_file_paths.rb
|
31
|
+
lib/jekyll/minibundle/asset_file_registry.rb
|
30
32
|
lib/jekyll/minibundle/asset_stamp.rb
|
31
33
|
lib/jekyll/minibundle/asset_tag_markup.rb
|
32
34
|
lib/jekyll/minibundle/bundle_file.rb
|
@@ -37,7 +39,6 @@ other gems).
|
|
37
39
|
lib/jekyll/minibundle/mini_stamp_tag.rb
|
38
40
|
lib/jekyll/minibundle/stamp_file.rb
|
39
41
|
lib/jekyll/minibundle/version.rb
|
40
|
-
lib/jekyll/minibundle.rb
|
41
42
|
}
|
42
43
|
|
43
44
|
s.test_files = %w{
|
@@ -47,15 +48,21 @@ other gems).
|
|
47
48
|
test/fixture/site/_assets/styles/reset.css
|
48
49
|
test/fixture/site/_bin/remove_comments
|
49
50
|
test/fixture/site/_bin/with_count
|
51
|
+
test/fixture/site/_config.yml
|
52
|
+
test/fixture/site/_layouts/default.html
|
50
53
|
test/fixture/site/_plugins/minibundle.rb
|
51
54
|
test/fixture/site/_tmp/site.css
|
55
|
+
test/fixture/site/about.html
|
56
|
+
test/fixture/site/assets/styles/reset.css
|
52
57
|
test/fixture/site/index.html
|
53
58
|
test/integration/minibundle_development_mode_test.rb
|
54
59
|
test/integration/minibundle_production_mode_test.rb
|
55
60
|
test/integration/ministamp_test.rb
|
61
|
+
test/integration/static_files_as_asset_sources_test.rb
|
56
62
|
test/support/fixture_config.rb
|
57
63
|
test/support/test_case.rb
|
58
64
|
test/unit/asset_bundle_test.rb
|
65
|
+
test/unit/asset_file_registry_test.rb
|
59
66
|
test/unit/asset_tag_markup_test.rb
|
60
67
|
test/unit/bundle_file_test.rb
|
61
68
|
test/unit/stamp_file_test.rb
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'jekyll/minibundle/environment'
|
2
|
+
require 'jekyll/minibundle/development_file_collection'
|
3
|
+
require 'jekyll/minibundle/bundle_file'
|
4
|
+
require 'jekyll/minibundle/stamp_file'
|
5
|
+
|
6
|
+
module Jekyll::Minibundle
|
7
|
+
module AssetFileRegistry
|
8
|
+
def self.clear
|
9
|
+
@@_instances = {}
|
10
|
+
end
|
11
|
+
|
12
|
+
clear
|
13
|
+
|
14
|
+
def self.bundle_file(config)
|
15
|
+
asset_destination_path = "#{config['destination_path']}.#{config['type']}"
|
16
|
+
@@_instances[asset_destination_path] ||= register_bundle_file config
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.stamp_file(asset_source_path, asset_destination_path)
|
20
|
+
@@_instances[asset_destination_path] ||= register_stamp_file asset_source_path, asset_destination_path
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.register_bundle_file(config)
|
24
|
+
if Environment.development?
|
25
|
+
DevelopmentFileCollection.new config
|
26
|
+
else
|
27
|
+
BundleFile.new config
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private_class_method :register_bundle_file
|
32
|
+
|
33
|
+
def self.register_stamp_file(asset_source_path, asset_destination_path)
|
34
|
+
StampFile.new(asset_source_path, asset_destination_path, &get_stamp_file_basenamer)
|
35
|
+
end
|
36
|
+
|
37
|
+
private_class_method :register_stamp_file
|
38
|
+
|
39
|
+
def self.get_stamp_file_basenamer
|
40
|
+
if Environment.development?
|
41
|
+
->(base, ext, _) { base + ext }
|
42
|
+
else
|
43
|
+
->(base, ext, stamper) { "#{base}-#{stamper.call}#{ext}" }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private_class_method :get_stamp_file_basenamer
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
safe: false
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<link rel="stylesheet" href="{% ministamp _tmp/site.css assets/screen.css %}" media="screen">
|
5
|
+
{% minibundle css %}
|
6
|
+
source_dir: _assets/styles
|
7
|
+
destination_path: assets/site
|
8
|
+
assets:
|
9
|
+
- reset
|
10
|
+
- common
|
11
|
+
attributes:
|
12
|
+
id: my-styles
|
13
|
+
media: projection
|
14
|
+
{% endminibundle %}
|
15
|
+
</head>
|
16
|
+
<body>
|
17
|
+
{% minibundle js %}
|
18
|
+
source_dir: _assets/scripts
|
19
|
+
destination_path: assets/site
|
20
|
+
assets:
|
21
|
+
- dependency
|
22
|
+
- app
|
23
|
+
attributes:
|
24
|
+
id: my-scripts
|
25
|
+
{% endminibundle %}
|
26
|
+
</body>
|
27
|
+
<title>{{ page.title }}</title>
|
28
|
+
</html>
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'support/test_case'
|
2
|
+
|
3
|
+
module Jekyll::Minibundle::Test
|
4
|
+
class StaticFilesAsAssetSourcesTest < TestCase
|
5
|
+
[:development, :production].each do |env|
|
6
|
+
define_method :"test_ministamp_allows_using_static_file_as_asset_source_in_#{env}_mode" do
|
7
|
+
with_site do
|
8
|
+
contents = 'h2 {}'
|
9
|
+
File.write source_path('assets/shared.css'), contents
|
10
|
+
find_and_gsub_in_file(source_path('_layouts/default.html'), 'ministamp _tmp/site.css', 'ministamp assets/shared.css')
|
11
|
+
generate_site env
|
12
|
+
|
13
|
+
asset_files = Dir[destination_path('assets') + '/screen*.css']
|
14
|
+
|
15
|
+
assert_equal 1, asset_files.size
|
16
|
+
assert_equal contents, File.read(destination_path('assets/shared.css'))
|
17
|
+
assert_equal contents, File.read(asset_files.first)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_minibundle_allows_using_static_file_as_asset_source_in_development_mode
|
23
|
+
with_site do
|
24
|
+
dep_contents = 'console.log("lol")'
|
25
|
+
app_contents = 'console.log("balal")'
|
26
|
+
File.write source_path('assets/dependency.js'), dep_contents
|
27
|
+
File.write source_path('assets/app.js'), app_contents
|
28
|
+
find_and_gsub_in_file(source_path('_layouts/default.html'), 'source_dir: _assets/scripts', 'source_dir: assets')
|
29
|
+
generate_site :development
|
30
|
+
|
31
|
+
assert_equal dep_contents, File.read(destination_path('assets/dependency.js'))
|
32
|
+
assert_equal app_contents, File.read(destination_path('assets/app.js'))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_minibundle_allows_using_static_file_as_asset_source_in_production_mode
|
37
|
+
with_site do
|
38
|
+
dep_contents = 'console.log("lol")'
|
39
|
+
app_contents = 'console.log("balal")'
|
40
|
+
bundled_contents = "#{dep_contents};\n#{app_contents};\n"
|
41
|
+
File.write source_path('assets/dependency.js'), dep_contents
|
42
|
+
File.write source_path('assets/app.js'), app_contents
|
43
|
+
find_and_gsub_in_file(source_path('_layouts/default.html'), 'source_dir: _assets/scripts', 'source_dir: assets')
|
44
|
+
generate_site :production
|
45
|
+
|
46
|
+
asset_files = Dir[destination_path('assets') + '/site-*.js']
|
47
|
+
|
48
|
+
assert_equal 1, asset_files.size
|
49
|
+
assert_equal dep_contents, File.read(destination_path('assets/dependency.js'))
|
50
|
+
assert_equal app_contents, File.read(destination_path('assets/app.js'))
|
51
|
+
assert_equal bundled_contents, File.read(asset_files.first)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'support/test_case'
|
2
|
+
require 'support/fixture_config'
|
3
|
+
require 'jekyll/minibundle/asset_file_registry'
|
4
|
+
|
5
|
+
module Jekyll::Minibundle::Test
|
6
|
+
class AssetFileRegistryTest < TestCase
|
7
|
+
include FixtureConfig
|
8
|
+
|
9
|
+
def setup
|
10
|
+
AssetFileRegistry.clear
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_returns_same_instance_for_same_stamp_file_config
|
14
|
+
first = AssetFileRegistry.stamp_file STAMP_SOURCE_PATH, STAMP_DESTINATION_PATH
|
15
|
+
second = AssetFileRegistry.stamp_file STAMP_SOURCE_PATH, STAMP_DESTINATION_PATH
|
16
|
+
assert_same first, second
|
17
|
+
assert_equal 1, asset_file_registry_size
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_returns_same_instance_for_same_bundle_file_config
|
21
|
+
first = AssetFileRegistry.bundle_file bundle_config
|
22
|
+
second = AssetFileRegistry.bundle_file bundle_config
|
23
|
+
assert_same first, second
|
24
|
+
assert_equal 1, asset_file_registry_size
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_bundle_files_allow_same_path_for_different_types
|
28
|
+
AssetFileRegistry.bundle_file bundle_config.merge('type' => :css)
|
29
|
+
AssetFileRegistry.bundle_file bundle_config.merge('type' => :js)
|
30
|
+
assert_equal 2, asset_file_registry_size
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def bundle_config
|
36
|
+
{
|
37
|
+
'type' => :css,
|
38
|
+
'site_dir' => '.',
|
39
|
+
'source_dir' => JS_BUNDLE_SOURCE_DIR,
|
40
|
+
'assets' => %w{dependency app},
|
41
|
+
'destination_path' => JS_BUNDLE_DESTINATION_PATH,
|
42
|
+
'attributes' => {}
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
def asset_file_registry_size
|
47
|
+
AssetFileRegistry.class_variable_get(:@@_instances).size
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-minibundle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tuomas Kareinen
|
@@ -68,10 +68,10 @@ dependencies:
|
|
68
68
|
version: 10.1.1
|
69
69
|
description: |
|
70
70
|
A straightforward asset bundling plugin for Jekyll, utilizing external
|
71
|
-
minification tool of your choice.
|
72
|
-
bundling and asset fingerprinting with MD5 digest for cache
|
73
|
-
other runtime dependencies besides the
|
74
|
-
other gems).
|
71
|
+
minification tool of your choice. It provides asset concatenation for
|
72
|
+
bundling and asset fingerprinting with MD5 digest for cache
|
73
|
+
busting. There are no other runtime dependencies besides the
|
74
|
+
minification tool (not even other gems).
|
75
75
|
email: tkareine@gmail.com
|
76
76
|
executables: []
|
77
77
|
extensions: []
|
@@ -83,9 +83,11 @@ files:
|
|
83
83
|
- RELEASING.txt
|
84
84
|
- Rakefile
|
85
85
|
- jekyll-minibundle.gemspec
|
86
|
+
- lib/jekyll/minibundle.rb
|
86
87
|
- lib/jekyll/minibundle/asset_bundle.rb
|
87
88
|
- lib/jekyll/minibundle/asset_file_operations.rb
|
88
89
|
- lib/jekyll/minibundle/asset_file_paths.rb
|
90
|
+
- lib/jekyll/minibundle/asset_file_registry.rb
|
89
91
|
- lib/jekyll/minibundle/asset_stamp.rb
|
90
92
|
- lib/jekyll/minibundle/asset_tag_markup.rb
|
91
93
|
- lib/jekyll/minibundle/bundle_file.rb
|
@@ -96,22 +98,27 @@ files:
|
|
96
98
|
- lib/jekyll/minibundle/mini_stamp_tag.rb
|
97
99
|
- lib/jekyll/minibundle/stamp_file.rb
|
98
100
|
- lib/jekyll/minibundle/version.rb
|
99
|
-
- lib/jekyll/minibundle.rb
|
100
101
|
- test/fixture/site/_assets/scripts/app.js
|
101
102
|
- test/fixture/site/_assets/scripts/dependency.js
|
102
103
|
- test/fixture/site/_assets/styles/common.css
|
103
104
|
- test/fixture/site/_assets/styles/reset.css
|
104
105
|
- test/fixture/site/_bin/remove_comments
|
105
106
|
- test/fixture/site/_bin/with_count
|
107
|
+
- test/fixture/site/_config.yml
|
108
|
+
- test/fixture/site/_layouts/default.html
|
106
109
|
- test/fixture/site/_plugins/minibundle.rb
|
107
110
|
- test/fixture/site/_tmp/site.css
|
111
|
+
- test/fixture/site/about.html
|
112
|
+
- test/fixture/site/assets/styles/reset.css
|
108
113
|
- test/fixture/site/index.html
|
109
114
|
- test/integration/minibundle_development_mode_test.rb
|
110
115
|
- test/integration/minibundle_production_mode_test.rb
|
111
116
|
- test/integration/ministamp_test.rb
|
117
|
+
- test/integration/static_files_as_asset_sources_test.rb
|
112
118
|
- test/support/fixture_config.rb
|
113
119
|
- test/support/test_case.rb
|
114
120
|
- test/unit/asset_bundle_test.rb
|
121
|
+
- test/unit/asset_file_registry_test.rb
|
115
122
|
- test/unit/asset_tag_markup_test.rb
|
116
123
|
- test/unit/bundle_file_test.rb
|
117
124
|
- test/unit/stamp_file_test.rb
|
@@ -151,15 +158,21 @@ test_files:
|
|
151
158
|
- test/fixture/site/_assets/styles/reset.css
|
152
159
|
- test/fixture/site/_bin/remove_comments
|
153
160
|
- test/fixture/site/_bin/with_count
|
161
|
+
- test/fixture/site/_config.yml
|
162
|
+
- test/fixture/site/_layouts/default.html
|
154
163
|
- test/fixture/site/_plugins/minibundle.rb
|
155
164
|
- test/fixture/site/_tmp/site.css
|
165
|
+
- test/fixture/site/about.html
|
166
|
+
- test/fixture/site/assets/styles/reset.css
|
156
167
|
- test/fixture/site/index.html
|
157
168
|
- test/integration/minibundle_development_mode_test.rb
|
158
169
|
- test/integration/minibundle_production_mode_test.rb
|
159
170
|
- test/integration/ministamp_test.rb
|
171
|
+
- test/integration/static_files_as_asset_sources_test.rb
|
160
172
|
- test/support/fixture_config.rb
|
161
173
|
- test/support/test_case.rb
|
162
174
|
- test/unit/asset_bundle_test.rb
|
175
|
+
- test/unit/asset_file_registry_test.rb
|
163
176
|
- test/unit/asset_tag_markup_test.rb
|
164
177
|
- test/unit/bundle_file_test.rb
|
165
178
|
- test/unit/stamp_file_test.rb
|