webpacker 1.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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/CHANGELOG.md +93 -9
  4. data/Gemfile.lock +2 -2
  5. data/README.md +979 -93
  6. data/lib/install/angular.rb +2 -2
  7. data/lib/install/bin/webpack-dev-server.tt +20 -10
  8. data/lib/install/bin/webpack.tt +10 -15
  9. data/lib/install/config/.babelrc +13 -1
  10. data/lib/install/config/loaders/core/sass.js +3 -2
  11. data/lib/install/config/loaders/installers/elm.js +20 -0
  12. data/lib/install/config/loaders/installers/vue.js +1 -0
  13. data/lib/install/config/webpack/configuration.js +22 -13
  14. data/lib/install/config/webpack/development.js +17 -1
  15. data/lib/install/config/webpack/production.js +16 -2
  16. data/lib/install/config/webpack/shared.js +15 -11
  17. data/lib/install/config/{webpack/paths.yml → webpacker.yml} +12 -7
  18. data/lib/install/elm.rb +29 -0
  19. data/lib/install/examples/angular/tsconfig.json +1 -0
  20. data/lib/install/examples/elm/Main.elm +54 -0
  21. data/lib/install/examples/elm/hello_elm.js +11 -0
  22. data/lib/install/examples/vue/hello_vue.js +4 -8
  23. data/lib/install/react.rb +2 -2
  24. data/lib/install/template.rb +10 -11
  25. data/lib/install/vue.rb +2 -2
  26. data/lib/tasks/installers.rake +1 -0
  27. data/lib/tasks/webpacker.rake +11 -9
  28. data/lib/tasks/webpacker/check_webpack_binstubs.rake +11 -0
  29. data/lib/tasks/webpacker/check_yarn.rake +6 -3
  30. data/lib/tasks/webpacker/clobber.rake +3 -3
  31. data/lib/tasks/webpacker/compile.rake +14 -20
  32. data/lib/tasks/webpacker/verify_install.rake +2 -2
  33. data/lib/tasks/webpacker/yarn_install.rake +2 -2
  34. data/lib/webpacker.rb +16 -1
  35. data/lib/webpacker/compiler.rb +20 -0
  36. data/lib/webpacker/configuration.rb +30 -22
  37. data/lib/webpacker/env.rb +2 -6
  38. data/lib/webpacker/helper.rb +0 -2
  39. data/lib/webpacker/manifest.rb +23 -6
  40. data/lib/webpacker/version.rb +1 -1
  41. data/package.json +1 -1
  42. data/test/configuration_test.rb +32 -0
  43. data/test/env_test.rb +3 -5
  44. data/test/helper_test.rb +23 -0
  45. data/test/manifest_test.rb +30 -0
  46. data/test/test_app/config/secrets.yml +5 -0
  47. data/test/test_app/public/packs/manifest.json +4 -0
  48. data/test/webpacker_test.rb +2 -1
  49. metadata +20 -7
  50. data/lib/install/bin/yarn.tt +0 -11
  51. data/lib/install/config/webpack/development.server.js +0 -17
  52. data/lib/install/config/webpack/development.server.yml +0 -17
@@ -1,3 +1,3 @@
1
1
  module Webpacker
2
- VERSION = "1.2".freeze
2
+ VERSION = "2.0".freeze
3
3
  end
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "scripts": {
18
18
  "test": "echo \"Error: no test specified\" && exit 1",
19
- "lint": "node_modules/eslint/bin/eslint.js lib/"
19
+ "lint": "yarn run eslint lib/"
20
20
  },
21
21
  "repository": {
22
22
  "type": "git",
@@ -0,0 +1,32 @@
1
+ require "webpacker_test"
2
+
3
+ class ConfigurationTest < Minitest::Test
4
+ def test_entry_path
5
+ entry_path = File.join(File.dirname(__FILE__), "test_app/app/javascript", "packs").to_s
6
+ assert_equal Webpacker::Configuration.entry_path.to_s, entry_path
7
+ end
8
+
9
+ def test_file_path
10
+ file_path = File.join(File.dirname(__FILE__), "test_app/config", "webpacker.yml").to_s
11
+ assert_equal Webpacker::Configuration.file_path.to_s, file_path
12
+ end
13
+
14
+ def test_manifest_path
15
+ manifest_path = File.join(File.dirname(__FILE__), "test_app/public/packs", "manifest.json").to_s
16
+ assert_equal Webpacker::Configuration.manifest_path.to_s, manifest_path
17
+ end
18
+
19
+ def test_output_path
20
+ output_path = File.join(File.dirname(__FILE__), "test_app/public/packs").to_s
21
+ assert_equal Webpacker::Configuration.output_path.to_s, output_path
22
+ end
23
+
24
+ def test_source
25
+ assert_equal Webpacker::Configuration.source.to_s, "app/javascript"
26
+ end
27
+
28
+ def test_source_path
29
+ source_path = File.join(File.dirname(__FILE__), "test_app/app/javascript").to_s
30
+ assert_equal Webpacker::Configuration.source_path.to_s, source_path
31
+ end
32
+ end
@@ -3,14 +3,12 @@ require "webpacker_test"
3
3
  class EnvTest < Minitest::Test
4
4
  def test_current_env
5
5
  assert_equal Webpacker::Env.current, "production"
6
- end
7
-
8
- def test_env_is_development?
9
- refute_predicate Webpacker::Env, :development?
6
+ assert_equal Webpacker.env, "production"
7
+ assert Webpacker.env.production?
10
8
  end
11
9
 
12
10
  def test_file_path
13
- correct_path = File.join(File.dirname(__FILE__), "config", "webpack", "paths.yml").to_s
11
+ correct_path = File.join(File.dirname(__FILE__), "test_app/config", "webpacker.yml").to_s
14
12
  assert_equal Webpacker::Env.file_path.to_s, correct_path
15
13
  end
16
14
  end
@@ -0,0 +1,23 @@
1
+ require "webpacker_test"
2
+
3
+ class HelperTest < ActionView::TestCase
4
+ def setup
5
+ @view = ActionView::Base.new
6
+ @view.extend Webpacker::Helper
7
+ end
8
+
9
+ def test_asset_pack_path
10
+ assert_equal @view.asset_pack_path("bootstrap.js"), "/packs/bootstrap-300631c4f0e0f9c865bc.js"
11
+ assert_equal @view.asset_pack_path("bootstrap.css"), "/packs/bootstrap-c38deda30895059837cf.css"
12
+ end
13
+
14
+ def test_javascript_pack_tag
15
+ script = %(<script src="/packs/bootstrap-300631c4f0e0f9c865bc.js"></script>)
16
+ assert_equal @view.javascript_pack_tag("bootstrap.js"), script
17
+ end
18
+
19
+ def test_stylesheet_pack_tag
20
+ style = %(<link rel="stylesheet" media="screen" href="/packs/bootstrap-c38deda30895059837cf.css" />)
21
+ assert_equal @view.stylesheet_pack_tag("bootstrap.css"), style
22
+ end
23
+ end
@@ -0,0 +1,30 @@
1
+ require "webpacker_test"
2
+
3
+ class ManifestTest < Minitest::Test
4
+ def test_file_path
5
+ file_path = File.join(File.dirname(__FILE__), "test_app/public/packs", "manifest.json").to_s
6
+ assert_equal Webpacker::Manifest.file_path.to_s, file_path
7
+ end
8
+
9
+ def test_lookup_exception
10
+ manifest_path = File.join(File.dirname(__FILE__), "test_app/public/packs", "manifest.json").to_s
11
+ asset_file = "calendar.js"
12
+
13
+ error = assert_raises Webpacker::FileLoader::NotFoundError do
14
+ Webpacker::Manifest.lookup(asset_file)
15
+ end
16
+
17
+ assert_equal error.message, "Can't find #{asset_file} in #{manifest_path}. Is webpack still compiling?"
18
+ end
19
+
20
+ def test_lookup_success
21
+ asset_file = "bootstrap.js"
22
+ assert_equal Webpacker::Manifest.lookup(asset_file), "/packs/bootstrap-300631c4f0e0f9c865bc.js"
23
+ end
24
+
25
+ def test_lookup_path
26
+ file_path = File.join(File.dirname(__FILE__), "test_app/public/packs", "bootstrap-300631c4f0e0f9c865bc.js").to_s
27
+ asset_file = "bootstrap.js"
28
+ assert_equal Webpacker::Manifest.lookup_path(asset_file).to_s, file_path
29
+ end
30
+ end
@@ -0,0 +1,5 @@
1
+ development:
2
+ secret_key_base: 'abcdef'
3
+
4
+ test:
5
+ secret_key_base: 'abcdef'
@@ -0,0 +1,4 @@
1
+ {
2
+ "bootstrap.css": "/packs/bootstrap-c38deda30895059837cf.css",
3
+ "bootstrap.js": "/packs/bootstrap-300631c4f0e0f9c865bc.js"
4
+ }
@@ -7,7 +7,8 @@ require "webpacker"
7
7
 
8
8
  module TestApp
9
9
  class Application < ::Rails::Application
10
- config.root = File.dirname(__FILE__)
10
+ config.root = File.join(File.dirname(__FILE__), "test_app")
11
+ config.eager_load = true
11
12
  end
12
13
  end
13
14
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webpacker
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.2'
4
+ version: '2.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-04-27 00:00:00.000000000 Z
12
+ date: 2017-05-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -88,7 +88,6 @@ files:
88
88
  - lib/install/angular.rb
89
89
  - lib/install/bin/webpack-dev-server.tt
90
90
  - lib/install/bin/webpack.tt
91
- - lib/install/bin/yarn.tt
92
91
  - lib/install/config/.babelrc
93
92
  - lib/install/config/.postcssrc.yml
94
93
  - lib/install/config/loaders/core/assets.js
@@ -97,22 +96,24 @@ files:
97
96
  - lib/install/config/loaders/core/erb.js
98
97
  - lib/install/config/loaders/core/sass.js
99
98
  - lib/install/config/loaders/installers/angular.js
99
+ - lib/install/config/loaders/installers/elm.js
100
100
  - lib/install/config/loaders/installers/react.js
101
101
  - lib/install/config/loaders/installers/vue.js
102
102
  - lib/install/config/webpack/configuration.js
103
103
  - lib/install/config/webpack/development.js
104
- - lib/install/config/webpack/development.server.js
105
- - lib/install/config/webpack/development.server.yml
106
- - lib/install/config/webpack/paths.yml
107
104
  - lib/install/config/webpack/production.js
108
105
  - lib/install/config/webpack/shared.js
109
106
  - lib/install/config/webpack/test.js
107
+ - lib/install/config/webpacker.yml
108
+ - lib/install/elm.rb
110
109
  - lib/install/examples/angular/hello_angular.js
111
110
  - lib/install/examples/angular/hello_angular/app/app.component.ts
112
111
  - lib/install/examples/angular/hello_angular/app/app.module.ts
113
112
  - lib/install/examples/angular/hello_angular/index.ts
114
113
  - lib/install/examples/angular/hello_angular/polyfills.ts
115
114
  - lib/install/examples/angular/tsconfig.json
115
+ - lib/install/examples/elm/Main.elm
116
+ - lib/install/examples/elm/hello_elm.js
116
117
  - lib/install/examples/react/.babelrc
117
118
  - lib/install/examples/react/hello_react.jsx
118
119
  - lib/install/examples/vue/app.vue
@@ -124,6 +125,7 @@ files:
124
125
  - lib/tasks/installers.rake
125
126
  - lib/tasks/webpacker.rake
126
127
  - lib/tasks/webpacker/check_node.rake
128
+ - lib/tasks/webpacker/check_webpack_binstubs.rake
127
129
  - lib/tasks/webpacker/check_yarn.rake
128
130
  - lib/tasks/webpacker/clobber.rake
129
131
  - lib/tasks/webpacker/compile.rake
@@ -131,6 +133,7 @@ files:
131
133
  - lib/tasks/webpacker/verify_install.rake
132
134
  - lib/tasks/webpacker/yarn_install.rake
133
135
  - lib/webpacker.rb
136
+ - lib/webpacker/compiler.rb
134
137
  - lib/webpacker/configuration.rb
135
138
  - lib/webpacker/env.rb
136
139
  - lib/webpacker/file_loader.rb
@@ -139,7 +142,12 @@ files:
139
142
  - lib/webpacker/railtie.rb
140
143
  - lib/webpacker/version.rb
141
144
  - package.json
145
+ - test/configuration_test.rb
142
146
  - test/env_test.rb
147
+ - test/helper_test.rb
148
+ - test/manifest_test.rb
149
+ - test/test_app/config/secrets.yml
150
+ - test/test_app/public/packs/manifest.json
143
151
  - test/webpacker_test.rb
144
152
  - webpacker.gemspec
145
153
  - yarn.lock
@@ -163,10 +171,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
171
  version: '0'
164
172
  requirements: []
165
173
  rubyforge_project:
166
- rubygems_version: 2.6.8
174
+ rubygems_version: 2.6.11
167
175
  signing_key:
168
176
  specification_version: 4
169
177
  summary: Use Webpack to manage app-like JavaScript modules in Rails
170
178
  test_files:
179
+ - test/configuration_test.rb
171
180
  - test/env_test.rb
181
+ - test/helper_test.rb
182
+ - test/manifest_test.rb
183
+ - test/test_app/config/secrets.yml
184
+ - test/test_app/public/packs/manifest.json
172
185
  - test/webpacker_test.rb
@@ -1,11 +0,0 @@
1
- <%= shebang %>
2
- VENDOR_PATH = File.expand_path('..', __dir__)
3
- Dir.chdir(VENDOR_PATH) do
4
- begin
5
- exec "yarnpkg #{ARGV.join(" ")}"
6
- rescue Errno::ENOENT
7
- $stderr.puts "Yarn executable was not detected in the system."
8
- $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
9
- exit 1
10
- end
11
- end
@@ -1,17 +0,0 @@
1
- // Note: You must restart bin/webpack-dev-server for changes to take effect
2
-
3
- const { resolve } = require('path')
4
- const merge = require('webpack-merge')
5
- const devConfig = require('./development.js')
6
- const { devServer, publicPath, paths } = require('./configuration.js')
7
-
8
- module.exports = merge(devConfig, {
9
- devServer: {
10
- host: devServer.host,
11
- port: devServer.port,
12
- compress: true,
13
- historyApiFallback: true,
14
- contentBase: resolve(paths.output, paths.entry),
15
- publicPath
16
- }
17
- })
@@ -1,17 +0,0 @@
1
- # Note: You must restart bin/webpack-dev-server for changes to take effect
2
-
3
- default: &default
4
- enabled: true
5
- host: localhost
6
- port: 8080
7
-
8
- development:
9
- <<: *default
10
-
11
- test:
12
- <<: *default
13
- enabled: false
14
-
15
- production:
16
- <<: *default
17
- enabled: false