webpacker 1.2 → 2.0

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