webpacker 5.1.1 → 5.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) 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/CHANGELOG.md +27 -3
  10. data/Gemfile.lock +112 -103
  11. data/README.md +11 -19
  12. data/docs/css.md +58 -3
  13. data/docs/integrations.md +1 -1
  14. data/docs/target.md +22 -0
  15. data/docs/testing.md +1 -1
  16. data/docs/troubleshooting.md +3 -1
  17. data/docs/typescript.md +44 -0
  18. data/docs/webpack-dev-server.md +1 -1
  19. data/lib/install/config/babel.config.js +1 -3
  20. data/lib/install/config/webpacker.yml +1 -1
  21. data/lib/install/template.rb +9 -1
  22. data/lib/install/typescript.rb +1 -1
  23. data/lib/tasks/webpacker/check_node.rake +1 -1
  24. data/lib/tasks/webpacker/check_yarn.rake +2 -3
  25. data/lib/tasks/webpacker/yarn_install.rake +7 -1
  26. data/lib/webpacker/commands.rb +1 -1
  27. data/lib/webpacker/compiler.rb +7 -2
  28. data/lib/webpacker/configuration.rb +27 -8
  29. data/lib/webpacker/dev_server_runner.rb +2 -2
  30. data/lib/webpacker/env.rb +5 -1
  31. data/lib/webpacker/helper.rb +25 -6
  32. data/lib/webpacker/runner.rb +1 -0
  33. data/lib/webpacker/version.rb +1 -1
  34. data/lib/webpacker/webpack_runner.rb +2 -2
  35. data/package.json +36 -36
  36. data/package/__tests__/config.js +12 -1
  37. data/package/__tests__/development.js +14 -1
  38. data/package/config.js +4 -1
  39. data/package/configPath.js +3 -0
  40. data/package/env.js +1 -2
  41. data/package/environments/__tests__/base.js +25 -8
  42. data/package/environments/base.js +5 -6
  43. data/package/environments/development.js +39 -33
  44. data/package/environments/production.js +1 -3
  45. data/package/rules/babel.js +11 -4
  46. data/package/rules/file.js +3 -2
  47. data/package/rules/node_modules.js +1 -3
  48. data/package/rules/sass.js +4 -1
  49. data/package/utils/helpers.js +1 -1
  50. data/test/compiler_test.rb +8 -3
  51. data/test/configuration_test.rb +8 -7
  52. data/test/dev_server_runner_test.rb +1 -1
  53. data/test/helper_test.rb +3 -0
  54. data/test/test_app/config/webpacker.yml +7 -1
  55. data/test/test_app/public/packs/manifest.json +1 -0
  56. data/test/webpack_runner_test.rb +1 -1
  57. data/webpacker.gemspec +1 -1
  58. data/yarn.lock +3497 -3628
  59. metadata +19 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 120db32ca99baa277a5452ed1c68cc0fa842e60aac86214f7329e2979b0d81ea
4
- data.tar.gz: 47c5eef5ff70a8436523b776e595e59269cac206e7b88e2f37bf4716a944f9d6
3
+ metadata.gz: 5166d2a4be6f8e7922eca1b15b6622115868a2a0ef8a7048170d55b33b0c952a
4
+ data.tar.gz: 626056ac147c4e33b8218f1010aba7360b95481217d1720d76571b8af5e065ea
5
5
  SHA512:
6
- metadata.gz: 784c1ad63862030eac771b060a82fbec37a73513f0cc82f2b08e13e0687a32ab673dcfb550bc73f22be420035a66cf39fb8425458e6660500758108875f2fe8f
7
- data.tar.gz: b52f0a2ac48b0fcfb07900d800976bcc2b8f99b46ad8109f7283088584d456b0f1f0129a7d5b1028060128cb7dcc04927ac2b98da965963e0a29adf626868b7a
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
- 10.13.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/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  **Please note that Webpacker 4.1.0 has an installer bug. Please use 4.2.0 or above**
4
4
 
5
+ ## [[5.4.0]](https://github.com/rails/webpacker/compare/v5.4.0...5.3.0) - 2021-05-18
6
+
7
+ - Fix compatibility with Psych 4
8
+
9
+ ## [[5.3.0]](https://github.com/rails/webpacker/compare/v5.3.0...5.2.1) - 2021-04-27
10
+
11
+ - Adds experimental Yarn 2 support. Note you must manually set `nodeLinker: node-modules` in your `.yarnrc.yml`.
12
+
13
+ - Keep backups, even when they're old [#2912](https://github.com/rails/webpacker/pull/2912)
14
+
15
+ ## [[5.2.2]](https://github.com/rails/webpacker/compare/v5.2.1...5.2.2) - 2021-04-27
16
+
17
+ - Bump deps and remove node-sass [#2997](https://github.com/rails/webpacker/pull/2997).
18
+
19
+ ## [[5.2.1]](https://github.com/rails/webpacker/compare/v5.2.0...5.2.1) - 2020-08-17
20
+
21
+ - Revert [#1311](https://github.com/rails/webpacker/pull/1311).
22
+
23
+ ## [[5.2.0]](https://github.com/rails/webpacker/compare/v5.1.1...5.2.0) - 2020-08-16
24
+
25
+ - Bump dependencies and fixes. See [diff](https://github.com/rails/webpacker/compare/v5.1.1...5-x-stable) for changes.
26
+
5
27
  ## [[5.1.1]](https://github.com/rails/webpacker/compare/v5.1.0...v5.1.1) - 2020-04-20
6
28
 
7
29
  - Update [TypeScript documentation](https://github.com/rails/webpacker/blob/master/docs/typescript.md) and installer to use babel-loader for typescript.[(#2541](https://github.com/rails/webpacker/pull/2541)
@@ -9,7 +31,7 @@
9
31
  ## [[5.1.0]](https://github.com/rails/webpacker/compare/v5.0.1...v5.1.0) - 2020-04-19
10
32
 
11
33
  - Remove yarn integrity check [#2518](https://github.com/rails/webpacker/pull/2518)
12
- - Switch from ts-loader to babel-loader [#2449](https://github.com/rails/webpacker/pull/2449)
34
+ - Switch from ts-loader to babel-loader [#2449](https://github.com/rails/webpacker/pull/2449)
13
35
  Please see the [TypeScript documentation](https://github.com/rails/webpacker/blob/master/docs/typescript.md) to upgrade existing projects to use typescript with 5.1
14
36
  - Resolve multi-word snakecase WEBPACKER_DEV_SERVER env values [#2528](https://github.com/rails/webpacker/pull/2528)
15
37
 
@@ -325,7 +347,7 @@ const { environment } = require('@rails/webpacker')
325
347
  // Enable with default config
326
348
  environment.splitChunks()
327
349
  // Configure via a callback
328
- environment.splitChunks(config =>
350
+ environment.splitChunks((config) =>
329
351
  Object.assign({}, config, { optimization: { splitChunks: false } })
330
352
  )
331
353
  ```
@@ -649,7 +671,9 @@ environment.resolvedModules.append('vendor', 'vendor')
649
671
  ```js
650
672
  // Enable css modules with sass loader
651
673
  const sassLoader = environment.loaders.get('sass')
652
- const cssLoader = sassLoader.use.find(loader => loader.loader === 'css-loader')
674
+ const cssLoader = sassLoader.use.find(
675
+ (loader) => loader.loader === 'css-loader'
676
+ )
653
677
 
654
678
  cssLoader.options = Object.assign({}, cssLoader.options, {
655
679
  modules: true,