webpacker 4.3.0 → 5.4.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 (84) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintrc.js +8 -8
  3. data/.github/workflows/jest.yml +38 -0
  4. data/.github/workflows/js-lint.yml +39 -0
  5. data/.github/workflows/rubocop.yml +39 -0
  6. data/.github/workflows/ruby.yml +66 -0
  7. data/.node-version +1 -1
  8. data/.rubocop.yml +113 -13
  9. data/.travis.yml +8 -22
  10. data/CHANGELOG.md +52 -2
  11. data/Gemfile +1 -0
  12. data/Gemfile.lock +116 -104
  13. data/README.md +59 -295
  14. data/docs/css.md +61 -7
  15. data/docs/deployment.md +2 -2
  16. data/docs/docker.md +17 -17
  17. data/docs/engines.md +13 -0
  18. data/docs/env.md +0 -2
  19. data/docs/integrations.md +220 -0
  20. data/docs/target.md +22 -0
  21. data/docs/testing.md +2 -3
  22. data/docs/troubleshooting.md +3 -1
  23. data/docs/typescript.md +92 -28
  24. data/docs/webpack-dev-server.md +1 -1
  25. data/lib/install/config/babel.config.js +1 -3
  26. data/lib/install/config/webpacker.yml +1 -5
  27. data/lib/install/examples/react/tsconfig.json +2 -1
  28. data/lib/install/examples/typescript/tsconfig.json +2 -1
  29. data/lib/install/loaders/svelte.js +2 -2
  30. data/lib/install/template.rb +10 -2
  31. data/lib/install/typescript.rb +6 -13
  32. data/lib/tasks/webpacker/check_node.rake +15 -8
  33. data/lib/tasks/webpacker/check_yarn.rake +16 -10
  34. data/lib/tasks/webpacker/clean.rake +12 -6
  35. data/lib/tasks/webpacker/clobber.rake +8 -4
  36. data/lib/tasks/webpacker/yarn_install.rake +11 -16
  37. data/lib/webpacker/commands.rb +33 -9
  38. data/lib/webpacker/compiler.rb +9 -5
  39. data/lib/webpacker/configuration.rb +28 -13
  40. data/lib/webpacker/dev_server_proxy.rb +3 -1
  41. data/lib/webpacker/dev_server_runner.rb +6 -6
  42. data/lib/webpacker/env.rb +5 -1
  43. data/lib/webpacker/helper.rb +37 -18
  44. data/lib/webpacker/manifest.rb +4 -4
  45. data/lib/webpacker/railtie.rb +0 -43
  46. data/lib/webpacker/runner.rb +1 -0
  47. data/lib/webpacker/version.rb +1 -1
  48. data/lib/webpacker/webpack_runner.rb +2 -2
  49. data/package.json +41 -41
  50. data/package/__tests__/config.js +12 -1
  51. data/package/__tests__/dev_server.js +2 -0
  52. data/package/__tests__/development.js +14 -1
  53. data/package/config.js +4 -1
  54. data/package/configPath.js +3 -0
  55. data/package/dev_server.js +1 -1
  56. data/package/env.js +1 -2
  57. data/package/environments/__tests__/base.js +29 -2
  58. data/package/environments/base.js +17 -7
  59. data/package/environments/development.js +39 -37
  60. data/package/environments/production.js +1 -3
  61. data/package/rules/babel.js +12 -5
  62. data/package/rules/file.js +3 -2
  63. data/package/rules/node_modules.js +1 -3
  64. data/package/rules/sass.js +10 -1
  65. data/package/utils/helpers.js +1 -1
  66. data/test/compiler_test.rb +8 -3
  67. data/test/configuration_test.rb +8 -7
  68. data/test/dev_server_runner_test.rb +1 -1
  69. data/test/helper_test.rb +3 -0
  70. data/test/manifest_test.rb +37 -6
  71. data/test/rake_tasks_test.rb +11 -0
  72. data/test/test_app/app/javascript/packs/multi_entry.css +4 -0
  73. data/test/test_app/app/javascript/packs/multi_entry.js +4 -0
  74. data/test/test_app/config/application.rb +0 -1
  75. data/test/test_app/config/webpacker.yml +7 -1
  76. data/test/test_app/public/packs/manifest.json +1 -0
  77. data/test/webpack_runner_test.rb +1 -1
  78. data/webpacker.gemspec +5 -4
  79. data/yarn.lock +4237 -3407
  80. metadata +43 -22
  81. data/gemfiles/Gemfile-rails.4.2.x +0 -9
  82. data/gemfiles/Gemfile-rails.5.0.x +0 -9
  83. data/gemfiles/Gemfile-rails.5.1.x +0 -9
  84. data/lib/install/loaders/typescript.js +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d92899958cdfa5fa810905a4d9dcb06573e691d7ef871492518265aadd78463
4
- data.tar.gz: '09cd698dd32daab4502e16e16e6c01577cf5af704e687ff3cb631aee7855596c'
3
+ metadata.gz: 5166d2a4be6f8e7922eca1b15b6622115868a2a0ef8a7048170d55b33b0c952a
4
+ data.tar.gz: 626056ac147c4e33b8218f1010aba7360b95481217d1720d76571b8af5e065ea
5
5
  SHA512:
6
- metadata.gz: df99f4799cb78e62a18299f8bfd429ced64ee9b0eb7a46f3ca21014e2a634649013659c3681e0b7f79071cccdeb91e57430bfb93af4f379ba14215debf807d47
7
- data.tar.gz: 5d23ef89dded82e78f0c5a5c84a103118fb6fba7feefbcdb4770f861e22c3fcdcb33ea0125178b0ba80d97d72a1e48c61bae77eaf8c442ace6c5992c6bf69d6d
6
+ metadata.gz: 780aec53de7f62dea38afc7e0eda8a45868380865493e8aea5d372ebdbea628f06da5b5c7232339b2af1f39f907093bc8a2ed19860beabcfc04dc59dbe889999
7
+ data.tar.gz: 71e3bba0bd47f85e9f639de5c9c274fc4a20a56bfa980111600e1f31ed086784fcb1f27472ffb95dac6d30e4320338de6bbe9f152113fde3db3bc5aa917bf6e4
data/.eslintrc.js CHANGED
@@ -1,14 +1,14 @@
1
1
  module.exports = {
2
- 'extends': 'airbnb',
3
- 'rules': {
2
+ extends: 'airbnb',
3
+ rules: {
4
4
  'comma-dangle': ['error', 'never'],
5
5
  'import/no-unresolved': 'off',
6
6
  'import/no-extraneous-dependencies': 'off',
7
7
  'import/extensions': 'off',
8
- semi: ['error', 'never'],
8
+ semi: ['error', 'never']
9
9
  },
10
- 'env': {
11
- 'browser': true,
12
- 'node': true,
13
- },
14
- };
10
+ env: {
11
+ browser: true,
12
+ node: true
13
+ }
14
+ }
@@ -0,0 +1,38 @@
1
+ name: Jest specs
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ name: Jest specs
8
+ strategy:
9
+ matrix:
10
+ os: [ubuntu-latest]
11
+ node: [10.x, 12.x, 14.x]
12
+
13
+ runs-on: ${{ matrix.os }}
14
+
15
+ steps:
16
+ - uses: actions/checkout@v2
17
+ - name: Get yarn cache directory path
18
+ id: yarn-cache-dir-path
19
+ run: echo "::set-output name=dir::$(yarn cache dir)"
20
+
21
+ - uses: actions/cache@v2
22
+ id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
23
+ with:
24
+ path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
25
+ key: ${{ runner.os }}-${{ matrix.node }}-yarn-${{ hashFiles('**/yarn.lock') }}
26
+ restore-keys: |
27
+ ${{ runner.os }}-${{ matrix.node }}-yarn-
28
+
29
+ - name: Use Node.js ${{ matrix.node }}
30
+ uses: actions/setup-node@v1
31
+ with:
32
+ node-version: ${{ matrix.node }}
33
+
34
+ - name: Install dependencies
35
+ run: yarn --frozen-lockfile
36
+
37
+ - name: Jest Specs
38
+ run: yarn test
@@ -0,0 +1,39 @@
1
+ name: JS lint
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ name: JS Lint
8
+
9
+ strategy:
10
+ matrix:
11
+ os: [ubuntu-latest]
12
+ node: [12.x]
13
+
14
+ runs-on: ${{ matrix.os }}
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - name: Get yarn cache directory path
19
+ id: yarn-cache-dir-path
20
+ run: echo "::set-output name=dir::$(yarn cache dir)"
21
+
22
+ - uses: actions/cache@v2
23
+ id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
24
+ with:
25
+ path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
26
+ key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
27
+ restore-keys: |
28
+ ${{ runner.os }}-yarn-
29
+
30
+ - name: Use Node.js ${{ matrix.node }}
31
+ uses: actions/setup-node@v1
32
+ with:
33
+ node-version: ${{ matrix.node }}
34
+
35
+ - name: Install dependencies
36
+ run: yarn --frozen-lockfile
37
+
38
+ - name: Lint
39
+ run: yarn lint
@@ -0,0 +1,39 @@
1
+ name: Rubocop
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ name: Rubocop
8
+ runs-on: ${{ matrix.os }}
9
+ env:
10
+ BUNDLE_JOBS: 4
11
+ BUNDLE_RETRY: 3
12
+ strategy:
13
+ matrix:
14
+ os: [ubuntu-latest]
15
+ ruby: [
16
+ 2.7
17
+ ]
18
+
19
+ steps:
20
+ - uses: actions/checkout@v2
21
+ - uses: actions/cache@v2
22
+ with:
23
+ path: /home/runner/bundle
24
+ key: bundle-use-ruby-gems-${{ hashFiles('**/Gemfile.lock') }}
25
+ restore-keys: |
26
+ bundle-use-ruby-gems-
27
+
28
+ - uses: ruby/setup-ruby@v1
29
+ with:
30
+ ruby-version: ${{ matrix.ruby }}
31
+
32
+ - name: Bundle install
33
+ run: |
34
+ gem install bundler -v 2.1.4
35
+ bundle config path /home/runner/bundle
36
+ bundle install
37
+
38
+ - name: Ruby linter
39
+ run: bundle exec rubocop
@@ -0,0 +1,66 @@
1
+ name: Ruby specs
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ name: Ruby specs
8
+ runs-on: ${{ matrix.os }}
9
+ continue-on-error: ${{ endsWith(matrix.ruby, 'head') || matrix.ruby == 'debug' || matrix.experimental }}
10
+ env:
11
+ BUNDLE_JOBS: 4
12
+ BUNDLE_RETRY: 3
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ os: [ubuntu-latest]
17
+ ruby: [
18
+ 2.4,
19
+ 2.5,
20
+ 2.6,
21
+ 2.7
22
+ ]
23
+ gemfile: [
24
+ "gemfiles/Gemfile-rails.5.2.x",
25
+ "gemfiles/Gemfile-rails.6.0.x"
26
+ ]
27
+ exclude:
28
+ - ruby: "2.4"
29
+ gemfile: gemfiles/Gemfile-rails.6.0.x
30
+ experimental: [false]
31
+ include:
32
+ - ruby: 2.5
33
+ os: ubuntu-latest
34
+ gemfile: gemfiles/Gemfile-rails-edge
35
+ experimental: true
36
+ - ruby: 2.6
37
+ os: ubuntu-latest
38
+ gemfile: gemfiles/Gemfile-rails-edge
39
+ experimental: true
40
+ - ruby: 2.7
41
+ os: ubuntu-latest
42
+ gemfile: gemfiles/Gemfile-rails-edge
43
+ experimental: true
44
+
45
+ steps:
46
+ - uses: actions/checkout@v2
47
+ - uses: actions/cache@v2
48
+ with:
49
+ path: /home/runner/bundle
50
+ key: bundle-use-ruby-${{ matrix.ruby }}-${{ matrix.gemfile }}-gems-${{ hashFiles(matrix.gemfile) }}-${{ hashFiles('**/*.gemspec') }}
51
+ restore-keys: |
52
+ bundle-use-ruby-${{ matrix.ruby }}-${{ matrix.gemfile }}-gems-
53
+
54
+ - uses: ruby/setup-ruby@v1
55
+ with:
56
+ ruby-version: ${{ matrix.ruby }}
57
+
58
+ - name: Bundle install
59
+ run: |
60
+ gem install bundler -v 2.1.4
61
+ bundle config path /home/runner/bundle
62
+ bundle config --global gemfile ${{ matrix.gemfile }}
63
+ bundle install --jobs 4 --retry 3
64
+
65
+ - name: Ruby specs
66
+ run: bundle exec rake test
data/.node-version CHANGED
@@ -1 +1 @@
1
- 8.16.0
1
+ 10.17.0
data/.rubocop.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  require: rubocop-performance
2
2
  AllCops:
3
- TargetRubyVersion: 2.2
3
+ TargetRubyVersion: 2.4
4
4
  # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
5
5
  # to ignore them, so only the ones explicitly set in this file are enabled.
6
6
  DisabledByDefault: true
@@ -13,11 +13,6 @@ AllCops:
13
13
  Style/AndOr:
14
14
  Enabled: true
15
15
 
16
- # Do not use braces for hash literals when they are the last argument of a
17
- # method call.
18
- Style/BracesAroundHashParameters:
19
- Enabled: true
20
-
21
16
  # Align `when` with `case`.
22
17
  Layout/CaseIndentation:
23
18
  Enabled: true
@@ -50,7 +45,11 @@ Style/HashSyntax:
50
45
  # extra level of indentation.
51
46
  Layout/IndentationConsistency:
52
47
  Enabled: true
53
- EnforcedStyle: rails
48
+ EnforcedStyle: indented_internal_methods
49
+
50
+ # Detect hard tabs, no hard tabs.
51
+ Layout/IndentationStyle:
52
+ Enabled: true
54
53
 
55
54
  # Two spaces, no tabs (for indentation).
56
55
  Layout/IndentationWidth:
@@ -98,12 +97,8 @@ Style/StringLiterals:
98
97
  Enabled: true
99
98
  EnforcedStyle: double_quotes
100
99
 
101
- # Detect hard tabs, no hard tabs.
102
- Layout/Tab:
103
- Enabled: true
104
-
105
100
  # Blank lines should not have any spaces.
106
- Layout/TrailingBlankLines:
101
+ Layout/TrailingEmptyLines:
107
102
  Enabled: true
108
103
 
109
104
  # No trailing whitespace.
@@ -111,7 +106,7 @@ Layout/TrailingWhitespace:
111
106
  Enabled: true
112
107
 
113
108
  # Use quotes for string literals when they are enough.
114
- Style/UnneededPercentQ:
109
+ Style/RedundantPercentQ:
115
110
  Enabled: true
116
111
 
117
112
  # Align `end` with the matching keyword or starting expression except for
@@ -123,3 +118,108 @@ Layout/EndAlignment:
123
118
  # Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
124
119
  Lint/RequireParentheses:
125
120
  Enabled: true
121
+
122
+ # Use `bind_call(obj, args, ...)` instead of `bind(obj).call(args, ...)`.
123
+ Performance/BindCall:
124
+ Enabled: true
125
+
126
+ # Use `caller(n..n)` instead of `caller`.
127
+ Performance/Caller:
128
+ Enabled: true
129
+
130
+ # Use `casecmp` for case comparison.
131
+ Performance/Casecmp:
132
+ Enabled: true
133
+
134
+ # Extract Array and Hash literals outside of loops into local variables or constants.
135
+ Performance/CollectionLiteralInLoop:
136
+ Enabled: true
137
+
138
+ # Prefer `sort_by(&:foo)` instead of `sort { |a, b| a.foo <=> b.foo }`.
139
+ Performance/CompareWithBlock:
140
+ Enabled: true
141
+
142
+ # Use `count` instead of `{select,find_all,filter,reject}...{size,count,length}`.
143
+ Performance/Count:
144
+ Enabled: true
145
+
146
+ # Use `delete_prefix` instead of `gsub`.
147
+ Performance/DeletePrefix:
148
+ Enabled: true
149
+
150
+ # Use `delete_suffix` instead of `gsub`.
151
+ Performance/DeleteSuffix:
152
+ Enabled: true
153
+
154
+ # Use `detect` instead of `select.first`, `find_all.first`, `filter.first`, `select.last`, `find_all.last`, and `filter.last`.
155
+ Performance/Detect:
156
+ Enabled: true
157
+
158
+ # Use `str.{start,end}_with?(x, ..., y, ...)` instead of `str.{start,end}_with?(x, ...) || str.{start,end}_with?(y, ...)`.
159
+ Performance/DoubleStartEndWith:
160
+ Enabled: true
161
+
162
+ # Use `end_with?` instead of a regex match anchored to the end of a string.
163
+ Performance/EndWith:
164
+ Enabled: true
165
+
166
+ # Do not compute the size of statically sized objects except in constants.
167
+ Performance/FixedSize:
168
+ Enabled: true
169
+
170
+ # Use `Enumerable#flat_map` instead of `Enumerable#map...Array#flatten(1).
171
+ Performance/FlatMap:
172
+ Enabled: true
173
+
174
+ # Use `key?` or `value?` instead of `keys.include?` or `values.include?`.
175
+ Performance/InefficientHashSearch:
176
+ Enabled: true
177
+
178
+ # Use `Range#cover?` instead of `Range#include?` (or `Range#member?`).
179
+ Performance/RangeInclude:
180
+ Enabled: true
181
+
182
+ # Use `yield` instead of `block.call`.
183
+ Performance/RedundantBlockCall:
184
+ Enabled: true
185
+
186
+ # Use `=~` instead of `String#match` or `Regexp#match` in a context where the returned `MatchData` is not needed.
187
+ Performance/RedundantMatch:
188
+ Enabled: true
189
+
190
+ # Use Hash#[]=, rather than Hash#merge! with a single key-value pair.
191
+ Performance/RedundantMerge:
192
+ Enabled: true
193
+
194
+ # Use `match?` instead of `Regexp#match`, `String#match`, `Symbol#match`, `Regexp#===`, or `=~` when `MatchData` is not used.
195
+ Performance/RegexpMatch:
196
+ Enabled: true
197
+
198
+ # Use `reverse_each` instead of `reverse.each`.
199
+ Performance/ReverseEach:
200
+ Enabled: true
201
+
202
+ # Use `size` instead of `count` for counting the number of elements in `Array` and `Hash`.
203
+ Performance/Size:
204
+ Enabled: true
205
+
206
+ # Use `start_with?` instead of a regex match anchored to the beginning of a string.
207
+ Performance/StartWith:
208
+ Enabled: true
209
+
210
+ # Use `tr` instead of `gsub` when you are replacing the same number of characters.
211
+ # Use `delete` instead of `gsub` when you are deleting characters.
212
+ Performance/StringReplacement:
213
+ Enabled: true
214
+
215
+ # Checks for .times.map calls.
216
+ Performance/TimesMap:
217
+ Enabled: true
218
+
219
+ # Use unary plus to get an unfrozen string literal.
220
+ Performance/UnfreezeString:
221
+ Enabled: true
222
+
223
+ # Use `URI::DEFAULT_PARSER` instead of `URI::Parser.new`.
224
+ Performance/UriDefaultParser:
225
+ Enabled: true
data/.travis.yml CHANGED
@@ -1,23 +1,15 @@
1
1
  language: ruby
2
2
  dist: xenial
3
3
  before_install:
4
- # Rails 4.2 doesn't support bundler 2.0, so we need to lock bundler to
5
- # v1.17.3. This is just for Ruby 2.5 which ships with bundler 2.x on Travis
6
- # CI while Ruby 2.6 does not.
7
- # https://github.com/travis-ci/travis-rubies/issues/57#issuecomment-458981237
8
- - rvm gemset create travis
9
- - rvm gemset use travis
10
- - gem install bundler -v 1.17.3
4
+ - gem install rubygems-update && update_rubygems
5
+ - yes | rvm @global do gem install bundler -v 2.1.4 || true
11
6
  rvm:
12
- - 2.3.8
13
- - 2.4.6
7
+ - 2.4.9
14
8
  - 2.5.5
15
- - 2.6.3
9
+ - 2.6.5
10
+ - 2.7.0
16
11
  - ruby-head
17
12
  gemfile:
18
- - gemfiles/Gemfile-rails.4.2.x
19
- - gemfiles/Gemfile-rails.5.0.x
20
- - gemfiles/Gemfile-rails.5.1.x
21
13
  - gemfiles/Gemfile-rails.5.2.x
22
14
  - gemfiles/Gemfile-rails.6.0.x
23
15
  - gemfiles/Gemfile-rails-edge
@@ -29,7 +21,7 @@ cache:
29
21
 
30
22
  install:
31
23
  - bundle install --jobs 3 --retry 3
32
- - nvm install 10
24
+ - nvm install 12
33
25
  - node -v
34
26
  - npm i -g yarn
35
27
  - yarn
@@ -43,15 +35,9 @@ matrix:
43
35
  - gemfile: gemfiles/Gemfile-rails-edge
44
36
  - rvm: ruby-head
45
37
  exclude:
46
- - rvm: 2.3.8
47
- gemfile: gemfiles/Gemfile-rails-edge
48
- - rvm: 2.4.6
38
+ - rvm: 2.4.9
49
39
  gemfile: gemfiles/Gemfile-rails-edge
50
40
  - rvm: 2.5.5
51
41
  gemfile: gemfiles/Gemfile-rails-edge
52
- - rvm: ruby-head
53
- gemfile: gemfiles/Gemfile-rails.4.2.x
54
- - rvm: 2.3.8
55
- gemfile: gemfiles/Gemfile-rails.6.0.x
56
- - rvm: 2.4.6
42
+ - rvm: 2.4.9
57
43
  gemfile: gemfiles/Gemfile-rails.6.0.x