webpacker_lite 2.0.0 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -2
- data/CHANGELOG.md +13 -1
- data/CONTRIBUTING.md +76 -0
- data/Gemfile.lock +1 -1
- data/README.md +3 -1
- data/Rakefile +16 -1
- data/lib/tasks/webpacker_lite/clobber.rake +1 -1
- data/lib/webpacker_lite.rb +3 -3
- data/lib/webpacker_lite/configuration.rb +6 -5
- data/lib/webpacker_lite/env.rb +1 -1
- data/lib/webpacker_lite/file_loader.rb +4 -4
- data/lib/webpacker_lite/manifest.rb +42 -11
- data/lib/webpacker_lite/version.rb +1 -1
- data/test/manifest_test.rb +4 -4
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e2db317915bebedc04ee628df5ebb0d007cafd5
|
4
|
+
data.tar.gz: '047779354717394e059550b300f6b86f7e0653b4'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a1f1f0931790a5004fbde87baa04ded96dcf69270f19c17a6e7459c0343b91439efa2ec7afccbb7c8a0d39b92e2814c4454dff8d8d728d40feb0652c124d3db
|
7
|
+
data.tar.gz: 24e05588ada561572186806b1e18e4fdd889072b525b485b8f2a8d2d9013837224834b5b193ed69ad85c9528737f42d64c0ac0cb0e92e8b49407cdf608d9ea3f
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,16 @@ Contributors: please follow the recommendations outlined at [keepachangelog.com]
|
|
6
6
|
## [Unreleased]
|
7
7
|
*Please add entries here for your pull requests.*
|
8
8
|
|
9
|
+
## [2.0.2] - 2017-05-26
|
10
|
+
### Fixed
|
11
|
+
* Fixed rake assets:clobber. [#11](https://github.com/shakacode/webpacker_lite/pull/11) by [dpuscher](https://github.com/dpuscher).
|
12
|
+
|
13
|
+
## [2.0.1] - 2017-05-26
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
* Added better error messages for missing files.
|
17
|
+
* Added api to check if the manifest exists
|
18
|
+
[#12](https://github.com/shakacode/webpacker_lite/pull/12) by [justin808](https://github.com/justin808).
|
9
19
|
|
10
20
|
## [2.0.0] - 2017-05-23
|
11
21
|
All in [#9](https://github.com/shakacode/webpacker_lite/pull/9) by [justin808](https://github.com/justin808) with help from [conturbo](https://github.com/conturbo) on the tests.
|
@@ -20,6 +30,8 @@ All in [#9](https://github.com/shakacode/webpacker_lite/pull/9) by [justin808](h
|
|
20
30
|
## [1.0.0] - 2017-05-03
|
21
31
|
Initial release
|
22
32
|
|
23
|
-
[Unreleased]: https://github.com/shakacode/webpacker_lite/compare/2.0.
|
33
|
+
[Unreleased]: https://github.com/shakacode/webpacker_lite/compare/2.0.2...master
|
34
|
+
[2.0.2]: https://github.com/shakacode/react_on_rails/compare/2.0.1...2.0.2
|
35
|
+
[2.0.1]: https://github.com/shakacode/react_on_rails/compare/2.0.0...2.0.1
|
24
36
|
[2.0.0]: https://github.com/shakacode/react_on_rails/compare/1.0.0...2.0.0
|
25
37
|
[1.0.0]: https://github.com/shakacode/react_on_rails/compare/0.0.5...1.0.0
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
# Tips for Contributors
|
2
|
+
|
3
|
+
## Summary
|
4
|
+
|
5
|
+
For non-doc fixes:
|
6
|
+
|
7
|
+
* Provide changelog entry in the [unreleased section of the CHANGELOG.md](https://github.com/shakacode/react_on_rails/blob/master/CHANGELOG.md#unreleased).
|
8
|
+
* Ensure CI passes and that you added a test that passes with the fix and fails without the fix.
|
9
|
+
* Optionally, squash all commits down to one with a nice commit message *ONLY* once final review is given. Make sure this single commit is rebased on top of master.
|
10
|
+
* Please address all code review comments.
|
11
|
+
* Ensure that docs are updated accordingly if a feature is added.
|
12
|
+
|
13
|
+
## Commit Messages
|
14
|
+
|
15
|
+
From [How to Write a Git Commit Message](http://chris.beams.io/posts/git-commit/)
|
16
|
+
|
17
|
+
#### The seven rules of a great git commit message
|
18
|
+
> Keep in mind: This has all been said before.
|
19
|
+
|
20
|
+
1. Separate subject from body with a blank line
|
21
|
+
1. Limit the subject line to 50 characters
|
22
|
+
1. Capitalize the subject line
|
23
|
+
1. Do not end the subject line with a period
|
24
|
+
1. Use the imperative mood in the subject line
|
25
|
+
1. Wrap the body at 72 characters
|
26
|
+
1. Use the body to explain what and why vs. how
|
27
|
+
|
28
|
+
|
29
|
+
## To run:
|
30
|
+
|
31
|
+
### Tests
|
32
|
+
```
|
33
|
+
rake test
|
34
|
+
```
|
35
|
+
|
36
|
+
### Linting
|
37
|
+
|
38
|
+
```
|
39
|
+
rake rubocop
|
40
|
+
```
|
41
|
+
|
42
|
+
or to autofix:
|
43
|
+
|
44
|
+
```
|
45
|
+
bundle exec rubocop -a
|
46
|
+
```
|
47
|
+
|
48
|
+
### All ci
|
49
|
+
|
50
|
+
```sh
|
51
|
+
rake
|
52
|
+
```
|
53
|
+
|
54
|
+
# Configuring to test changes with your app
|
55
|
+
|
56
|
+
Use the relative path syntax in your gemfile.
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
gem "webpacker_lite", path: "../../../webpacker_lite"
|
60
|
+
```
|
61
|
+
|
62
|
+
# Advice for Project Maintainers and Contributors
|
63
|
+
|
64
|
+
What do project maintainers do? What sort of work is involved? [sstephenson](https://github.com/sstephenson) wrote in the [turbolinks](https://github.com/turbolinks/turbolinks) repo:
|
65
|
+
|
66
|
+
> [Why this is not still fully merged?](https://github.com/turbolinks/turbolinks/pull/124#issuecomment-239826060)
|
67
|
+
|
68
|
+
# Releasing
|
69
|
+
|
70
|
+
If the version to bump is `2.0.1`
|
71
|
+
|
72
|
+
```
|
73
|
+
gem bump --tag --push --version 2.0.1
|
74
|
+
```
|
75
|
+
|
76
|
+
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -83,7 +83,7 @@ This example config shows how we use different output directories for the webpac
|
|
83
83
|
default: &default
|
84
84
|
manifest: manifest.json
|
85
85
|
# Used in your webpack configuration. Must be created in the
|
86
|
-
# webpack_public_output_dir folder
|
86
|
+
# webpack_public_output_dir folder.
|
87
87
|
|
88
88
|
development:
|
89
89
|
<<: *default
|
@@ -141,6 +141,7 @@ production:
|
|
141
141
|
## Other Helpers: Getting the asset path
|
142
142
|
|
143
143
|
The `asset_pack_path` helper provides the path of any given asset that's been compiled by webpack.
|
144
|
+
Note, the real file path is the subdirectory of the public.
|
144
145
|
|
145
146
|
For example, if you want to create a `<link rel="prefetch">` or `<img />`
|
146
147
|
for an asset used in your pack code you can reference them like this in your view,
|
@@ -148,6 +149,7 @@ for an asset used in your pack code you can reference them like this in your vie
|
|
148
149
|
```erb
|
149
150
|
<img src="<%= asset_pack_path 'calendar.png' %>" />
|
150
151
|
<% # => <img src="/webpack/calendar.png" /> %>
|
152
|
+
<% # real file path "public/webpack/calendar.png" /> %>
|
151
153
|
```
|
152
154
|
|
153
155
|
## Webpack Helper
|
data/Rakefile
CHANGED
@@ -2,6 +2,16 @@
|
|
2
2
|
require "bundler/gem_tasks"
|
3
3
|
require "rake/testtask"
|
4
4
|
|
5
|
+
# Executes a string or an array of strings in a shell in the given directory
|
6
|
+
def sh_in_dir(dir, shell_commands)
|
7
|
+
shell_commands = [shell_commands] if shell_commands.is_a?(String)
|
8
|
+
shell_commands.each { |shell_command| sh %(cd #{dir} && #{shell_command.strip}) }
|
9
|
+
end
|
10
|
+
|
11
|
+
def gem_root
|
12
|
+
File.expand_path("../.", __FILE__)
|
13
|
+
end
|
14
|
+
|
5
15
|
Rake::TestTask.new(:test) do |t|
|
6
16
|
t.libs << "test"
|
7
17
|
t.libs << "lib"
|
@@ -9,4 +19,9 @@ Rake::TestTask.new(:test) do |t|
|
|
9
19
|
t.verbose = true
|
10
20
|
end
|
11
21
|
|
12
|
-
|
22
|
+
desc "Run Rubocop as shell"
|
23
|
+
task :rubocop do
|
24
|
+
sh_in_dir(gem_root, "bundle exec rubocop .")
|
25
|
+
end
|
26
|
+
|
27
|
+
task default: [:test, :rubocop]
|
data/lib/webpacker_lite.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module WebpackerLite
|
2
2
|
def self.bootstrap
|
3
|
-
WebpackerLite::Env.
|
4
|
-
WebpackerLite::Configuration.
|
5
|
-
WebpackerLite::Manifest.
|
3
|
+
WebpackerLite::Env.load_instance
|
4
|
+
WebpackerLite::Configuration.load_instance
|
5
|
+
WebpackerLite::Manifest.load_instance
|
6
6
|
end
|
7
7
|
|
8
8
|
def env
|
@@ -3,6 +3,8 @@ require "webpacker_lite/file_loader"
|
|
3
3
|
require "webpacker_lite/env"
|
4
4
|
|
5
5
|
class WebpackerLite::Configuration < WebpackerLite::FileLoader
|
6
|
+
RAILS_WEB_PUBLIC = "public"
|
7
|
+
|
6
8
|
class << self
|
7
9
|
def manifest_path
|
8
10
|
Rails.root.join(webpack_public_output_dir,
|
@@ -10,8 +12,7 @@ class WebpackerLite::Configuration < WebpackerLite::FileLoader
|
|
10
12
|
end
|
11
13
|
|
12
14
|
def webpack_public_output_dir
|
13
|
-
Rails.root.join(
|
14
|
-
File.join("public", configuration.fetch(:webpack_public_output_dir, "webpack")))
|
15
|
+
Rails.root.join(RAILS_WEB_PUBLIC, configuration.fetch(:webpack_public_output_dir, "webpack"))
|
15
16
|
end
|
16
17
|
|
17
18
|
def base_path
|
@@ -37,8 +38,8 @@ class WebpackerLite::Configuration < WebpackerLite::FileLoader
|
|
37
38
|
end
|
38
39
|
|
39
40
|
def configuration
|
40
|
-
|
41
|
-
raise WebpackerLite::FileLoader::FileLoaderError.new("WebpackerLite::Configuration.
|
41
|
+
load_instance if WebpackerLite::Env.development?
|
42
|
+
raise WebpackerLite::FileLoader::FileLoaderError.new("WebpackerLite::Configuration.load_instance must be called first") unless instance
|
42
43
|
instance.data
|
43
44
|
end
|
44
45
|
|
@@ -48,7 +49,7 @@ class WebpackerLite::Configuration < WebpackerLite::FileLoader
|
|
48
49
|
end
|
49
50
|
|
50
51
|
private
|
51
|
-
def
|
52
|
+
def load_data
|
52
53
|
return super unless File.exist?(@path)
|
53
54
|
HashWithIndifferentAccess.new(YAML.load(File.read(@path))[WebpackerLite::Env.current])
|
54
55
|
end
|
data/lib/webpacker_lite/env.rb
CHANGED
@@ -25,7 +25,7 @@ class WebpackerLite::Env < WebpackerLite::FileLoader
|
|
25
25
|
end
|
26
26
|
|
27
27
|
private
|
28
|
-
def
|
28
|
+
def load_data
|
29
29
|
environments = File.exist?(@path) ? YAML.load(File.read(@path)).keys : [].freeze
|
30
30
|
return ENV["NODE_ENV"] if environments.include?(ENV["NODE_ENV"])
|
31
31
|
return Rails.env if environments.include?(Rails.env)
|
@@ -7,22 +7,22 @@ class WebpackerLite::FileLoader
|
|
7
7
|
attr_accessor :data
|
8
8
|
|
9
9
|
class << self
|
10
|
-
def
|
10
|
+
def load_instance(path = file_path)
|
11
11
|
self.instance = new(path)
|
12
12
|
end
|
13
13
|
|
14
14
|
def file_path
|
15
|
-
raise "Subclass of WebpackerLite::FileLoader should override this method"
|
15
|
+
raise FileLoaderError.new("Subclass of WebpackerLite::FileLoader should override this method")
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
private
|
20
20
|
def initialize(path)
|
21
21
|
@path = path
|
22
|
-
@data =
|
22
|
+
@data = load_data
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
25
|
+
def load_data
|
26
26
|
{}.freeze
|
27
27
|
end
|
28
28
|
end
|
@@ -11,30 +11,61 @@ require "webpacker_lite/configuration"
|
|
11
11
|
|
12
12
|
class WebpackerLite::Manifest < WebpackerLite::FileLoader
|
13
13
|
class << self
|
14
|
-
|
15
|
-
|
14
|
+
# Helper method to determine if the manifest file exists.
|
15
|
+
def exist?
|
16
|
+
path_object = WebpackerLite::Configuration.manifest_path
|
17
|
+
path_object.exist?
|
16
18
|
end
|
17
19
|
|
18
|
-
def
|
19
|
-
|
20
|
-
raise WebpackerLite::FileLoader::FileLoaderError.new("WebpackerLite::Manifest.load must be called first") unless instance
|
21
|
-
instance.data[name.to_s] || missing_file_error(name)
|
20
|
+
def file_path
|
21
|
+
WebpackerLite::Configuration.manifest_path
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
24
|
+
def missing_file_from_manifest_error(bundle_name)
|
25
25
|
msg = <<-MSG
|
26
|
-
WebpackerLite can't find #{
|
27
|
-
1. You are hot reloading
|
28
|
-
2. Webpack
|
26
|
+
WebpackerLite can't find #{bundle_name} in your manifest #{file_path}. Possible causes:
|
27
|
+
1. You are hot reloading.
|
28
|
+
2. Webpack has not re-run to reflect updates.
|
29
29
|
3. You have misconfigured WebpackerLite's config/webpacker_lite.yml file.
|
30
30
|
4. Your Webpack configuration is not creating a manifest.
|
31
31
|
MSG
|
32
32
|
raise(WebpackerLite::FileLoader::NotFoundError.new(msg))
|
33
33
|
end
|
34
|
+
|
35
|
+
# Same as lookup, but raises an error.
|
36
|
+
def lookup!(name)
|
37
|
+
lookup(name) || missing_file_from_manifest_error(name)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Find the real file name from the manifest key.
|
41
|
+
def lookup(name)
|
42
|
+
instance.confirm_manifest_exists
|
43
|
+
|
44
|
+
load_instance if WebpackerLite::Env.development? || instance.data.empty?
|
45
|
+
raise WebpackerLite::FileLoader::FileLoaderError.new("WebpackerLite::Manifest.load must be called first") unless instance
|
46
|
+
instance.data[name.to_s]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def confirm_manifest_exists
|
51
|
+
raise missing_manifest_file_error(@path) unless File.exist?(@path)
|
34
52
|
end
|
35
53
|
|
36
54
|
private
|
37
|
-
|
55
|
+
|
56
|
+
def missing_manifest_file_error(path_object)
|
57
|
+
msg = <<-MSG
|
58
|
+
|
59
|
+
WebpackerLite can't find the manifest file: #{path_object}
|
60
|
+
Possible causes:
|
61
|
+
1. You have not invoked webpack.
|
62
|
+
2. You have misconfigured WebpackerLite's config/webpacker_lite.yml file.
|
63
|
+
3. Your Webpack configuration is not creating a manifest.
|
64
|
+
MSG
|
65
|
+
raise(WebpackerLite::FileLoader::NotFoundError.new(msg))
|
66
|
+
end
|
67
|
+
|
68
|
+
def load_data
|
38
69
|
return super unless File.exist?(@path)
|
39
70
|
JSON.parse(File.read(@path))
|
40
71
|
end
|
data/test/manifest_test.rb
CHANGED
@@ -11,14 +11,14 @@ class ManifestTest < Minitest::Test
|
|
11
11
|
asset_file = "calendar.js"
|
12
12
|
msg = <<-MSG
|
13
13
|
WebpackerLite can't find #{asset_file} in your manifest #{manifest_path}. Possible causes:
|
14
|
-
1. You are hot reloading
|
15
|
-
2. Webpack
|
14
|
+
1. You are hot reloading.
|
15
|
+
2. Webpack has not re-run to reflect updates.
|
16
16
|
3. You have misconfigured WebpackerLite's config/webpacker_lite.yml file.
|
17
17
|
4. Your Webpack configuration is not creating a manifest.
|
18
18
|
MSG
|
19
19
|
|
20
20
|
error = assert_raises WebpackerLite::FileLoader::NotFoundError do
|
21
|
-
WebpackerLite::Manifest.lookup(asset_file)
|
21
|
+
WebpackerLite::Manifest.lookup!(asset_file)
|
22
22
|
end
|
23
23
|
|
24
24
|
assert_equal error.message, msg
|
@@ -26,6 +26,6 @@ class ManifestTest < Minitest::Test
|
|
26
26
|
|
27
27
|
def test_lookup_success
|
28
28
|
asset_file = "bootstrap.js"
|
29
|
-
assert_equal WebpackerLite::Manifest.lookup(asset_file), "bootstrap-300631c4f0e0f9c865bc.js"
|
29
|
+
assert_equal WebpackerLite::Manifest.lookup!(asset_file), "bootstrap-300631c4f0e0f9c865bc.js"
|
30
30
|
end
|
31
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webpacker_lite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson, Justin Gordon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- ".rubocop.yml"
|
77
77
|
- ".travis.yml"
|
78
78
|
- CHANGELOG.md
|
79
|
+
- CONTRIBUTING.md
|
79
80
|
- Gemfile
|
80
81
|
- Gemfile.lock
|
81
82
|
- MIT-LICENSE
|