webpacker 4.0.3 → 4.1.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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/.node-version +1 -1
  3. data/.rubocop.yml +2 -1
  4. data/.travis.yml +7 -4
  5. data/CHANGELOG.md +244 -129
  6. data/Gemfile.lock +79 -60
  7. data/README.md +110 -3
  8. data/docs/css.md +12 -0
  9. data/docs/deployment.md +38 -9
  10. data/docs/docker.md +25 -6
  11. data/docs/engines.md +40 -3
  12. data/docs/es6.md +19 -1
  13. data/docs/troubleshooting.md +37 -9
  14. data/docs/typescript.md +8 -5
  15. data/docs/webpack-dev-server.md +1 -1
  16. data/docs/webpack.md +18 -3
  17. data/gemfiles/Gemfile-rails.6.0.x +9 -0
  18. data/lib/install/bin/webpack +0 -1
  19. data/lib/install/bin/webpack-dev-server +0 -1
  20. data/lib/install/coffee.rb +1 -1
  21. data/lib/install/config/babel.config.js +11 -11
  22. data/lib/install/config/webpacker.yml +2 -1
  23. data/lib/install/elm.rb +1 -1
  24. data/lib/install/erb.rb +2 -2
  25. data/lib/install/examples/angular/hello_angular/polyfills.ts +2 -2
  26. data/lib/install/examples/react/babel.config.js +18 -15
  27. data/lib/install/examples/svelte/app.svelte +11 -0
  28. data/lib/install/examples/svelte/hello_svelte.js +20 -0
  29. data/lib/install/loaders/elm.js +9 -6
  30. data/lib/install/loaders/svelte.js +9 -0
  31. data/lib/install/loaders/typescript.js +1 -1
  32. data/lib/install/svelte.rb +29 -0
  33. data/lib/install/typescript.rb +1 -1
  34. data/lib/install/vue.rb +1 -1
  35. data/lib/tasks/installers.rake +1 -0
  36. data/lib/tasks/webpacker.rake +2 -0
  37. data/lib/tasks/webpacker/clean.rake +15 -0
  38. data/lib/tasks/webpacker/compile.rake +1 -1
  39. data/lib/tasks/webpacker/yarn_install.rake +15 -0
  40. data/lib/webpacker.rb +1 -1
  41. data/lib/webpacker/commands.rb +26 -0
  42. data/lib/webpacker/compiler.rb +15 -8
  43. data/lib/webpacker/configuration.rb +9 -1
  44. data/lib/webpacker/dev_server.rb +1 -1
  45. data/lib/webpacker/dev_server_proxy.rb +2 -8
  46. data/lib/webpacker/helper.rb +39 -13
  47. data/lib/webpacker/railtie.rb +4 -0
  48. data/lib/webpacker/version.rb +1 -1
  49. data/package.json +36 -37
  50. data/package/__tests__/config.js +0 -23
  51. data/package/config.js +2 -10
  52. data/package/config_types/config_list.js +3 -3
  53. data/package/config_types/config_object.js +1 -1
  54. data/package/environments/base.js +2 -2
  55. data/package/environments/development.js +1 -1
  56. data/package/environments/production.js +12 -0
  57. data/package/rules/babel.js +1 -1
  58. data/package/rules/node_modules.js +2 -1
  59. data/package/rules/sass.js +1 -1
  60. data/package/utils/__tests__/get_style_rule.js +9 -0
  61. data/package/utils/deep_merge.js +5 -5
  62. data/package/utils/get_style_rule.js +7 -12
  63. data/package/utils/helpers.js +9 -9
  64. data/test/command_test.rb +6 -0
  65. data/test/compiler_test.rb +5 -6
  66. data/test/configuration_test.rb +36 -27
  67. data/test/dev_server_test.rb +22 -0
  68. data/test/helper_test.rb +34 -0
  69. data/test/rake_tasks_test.rb +6 -0
  70. data/test/test_app/bin/webpack +0 -1
  71. data/test/test_app/bin/webpack-dev-server +0 -1
  72. data/test/test_app/config/webpacker.yml +1 -0
  73. data/test/test_app/public/packs/manifest.json +3 -0
  74. data/webpacker.gemspec +2 -1
  75. data/yarn.lock +1934 -1642
  76. metadata +24 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca4c04cd7d94f5b71c351ccc33131c7b3674e5fca8dbfd96e58917cc28638490
4
- data.tar.gz: 8a2924f440cee006085a8b6131de74bc422b99be5c2bda35b98d976b3f4daba6
3
+ metadata.gz: 9f963229e216d0bca7d8df5465f22b533717bc8be3adf863741a192c7861e973
4
+ data.tar.gz: 629616f4cdd093022317961b93e5aa1af05f6ac76c838f4a1ee9f3572a40ef84
5
5
  SHA512:
6
- metadata.gz: 26777525488474c374c6d002d81f24b57e24045f1386f75f5dd937e6da71baa65d5008357cd7e3f1b1ede5dbaf552f03c2e2718c2428a57daac3c744a8326ab1
7
- data.tar.gz: 8baffc48b354871019ec994ceab2c5595d83aadebcfa66e130c3d8e8c97edb6de8c9f3268aadbb528582cef6a0867b72a97d6144ae5e047e65777057c770eb50
6
+ metadata.gz: ea84ec0b04b8bc519e4cfe2ba0d15c232f14d41995874da3b0faa0397597d62e184c5b9e726e95c73a15a05baf4d89feef1e47081b1bd6ccb9e2139fb85cc01a
7
+ data.tar.gz: 5209c618fdf30b3e9b39277a672fa97d8b941d31defa973ae8467f1e5daea03e5dfc1af128d65cd4a40ed41be091f8a222929782a044bba6f2f8934c53c4a8b3
@@ -1 +1 @@
1
- 6.14.4
1
+ 8.16.0
@@ -1,3 +1,4 @@
1
+ require: rubocop-performance
1
2
  AllCops:
2
3
  TargetRubyVersion: 2.2
3
4
  # RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
@@ -71,7 +72,7 @@ Layout/SpaceAroundOperators:
71
72
  Enabled: true
72
73
 
73
74
  Layout/SpaceBeforeFirstArg:
74
- Enabled: true
75
+ Enabled: true
75
76
 
76
77
  # Defining a method with parameters needs parentheses.
77
78
  Style/MethodDefParentheses:
@@ -1,5 +1,4 @@
1
1
  language: ruby
2
- bundler_args: --jobs 3 --retry 3
3
2
  dist: xenial
4
3
  before_install:
5
4
  - gem install rubygems-update && update_rubygems
@@ -7,19 +6,19 @@ before_install:
7
6
  # v1.17.3. This is just for Ruby 2.5 which ships with bundler 2.x on Travis
8
7
  # CI while Ruby 2.6 does not.
9
8
  # https://github.com/travis-ci/travis-rubies/issues/57#issuecomment-458981237
10
- - yes | rvm @global do gem uninstall bundler --all
11
9
  - yes | rvm @global do gem install bundler -v 1.17.3 || true
12
10
  rvm:
13
11
  - 2.3.8
14
12
  - 2.4.6
15
13
  - 2.5.5
16
- - 2.6.2
14
+ - 2.6.3
17
15
  - ruby-head
18
16
  gemfile:
19
17
  - gemfiles/Gemfile-rails.4.2.x
20
18
  - gemfiles/Gemfile-rails.5.0.x
21
19
  - gemfiles/Gemfile-rails.5.1.x
22
20
  - gemfiles/Gemfile-rails.5.2.x
21
+ - gemfiles/Gemfile-rails.6.0.x
23
22
  - gemfiles/Gemfile-rails-edge
24
23
  cache:
25
24
  bundler: true
@@ -28,7 +27,7 @@ cache:
28
27
  yarn: true
29
28
 
30
29
  install:
31
- - bundle install
30
+ - bundle install --jobs 3 --retry 3
32
31
  - nvm install 10
33
32
  - node -v
34
33
  - npm i -g yarn
@@ -51,3 +50,7 @@ matrix:
51
50
  gemfile: gemfiles/Gemfile-rails-edge
52
51
  - rvm: ruby-head
53
52
  gemfile: gemfiles/Gemfile-rails.4.2.x
53
+ - rvm: 2.3.8
54
+ gemfile: gemfiles/Gemfile-rails.6.0.x
55
+ - rvm: 2.4.6
56
+ gemfile: gemfiles/Gemfile-rails.6.0.x
@@ -1,9 +1,64 @@
1
1
  **Please note that Webpacker 3.1.0 and 3.1.1 have some serious bugs so please consider using either 3.0.2 or 3.2.0**
2
2
 
3
+ ## [[4.1.0]](https://github.com/rails/webpacker/compare/v4.0.7...v4.1.0) - 2019-11-12
4
+
5
+ - Added favicon_pack_tag to generate favicon links [#2281](https://github.com/rails/webpacker/pull/2281)
6
+ - Add support for Brotli compression [#2273](https://github.com/rails/webpacker/pull/2273)
7
+ - Support .(sass|scss).erb [#2259](https://github.com/rails/webpacker/pull/2259)
8
+ - Elm: Enable production optimizations when compiling in production [#2234](https://github.com/rails/webpacker/pull/2234)
9
+ - fixes webpacker:clean erroring because of nested hashes [#2318](https://github.com/rails/webpacker/pull/2318)
10
+ - Revert of production env enforcement [#2341](https://github.com/rails/webpacker/pull/2341)
11
+ - Add a preload_pack_asset helper [#2124](https://github.com/rails/webpacker/pull/2124)
12
+ - Record the compilation digest even on webpack error [#2117](https://github.com/rails/webpacker/pull/2117)
13
+ - See more changes [here](https://github.com/rails/webpacker/compare/v4.0.7...v4.1.0)
14
+
15
+ ## [[4.0.7]](https://github.com/rails/webpacker/compare/v4.0.6...v4.0.7) - 2019-06-03
16
+
17
+ - Prevent `@babel/plugin-transform-runtime` from rewriting babel helpers in core-js. Remove unneeded runtime `@babel/runtime-corejs3` [#2116](https://github.com/rails/webpacker/pull/2116)
18
+ - Fix for: [#2109 Uncaught TypeError: **webpack_require**(...) is not a function](https://github.com/rails/webpacker/issues/2109): **If you are upgrading**, please check your `babel.config.js` against the [default `babel.config.js`](https://github.com/rails/webpacker/blob/master/lib/install/config/babel.config.js):
19
+ - `@babel/preset-env` should contain `corejs: 3`
20
+ - `@babel/plugin-transform-runtime` should contain `corejs: false`
21
+ - Removed unneeded runtime `@babel/runtime-corejs3`
22
+
23
+ ## [[4.0.6]](https://github.com/rails/webpacker/compare/v4.0.5...v4.0.6) - 2019-05-30
24
+
25
+ - Webpack should not be transpiled [#2111](https://github.com/rails/webpacker/pull/2111)
26
+
27
+ ## [[4.0.5]](https://github.com/rails/webpacker/compare/v4.0.4...v4.0.5) - 2019-05-30
28
+
29
+ - Don't let babel & core-js transpile each other [#2110](https://github.com/rails/webpacker/pull/2110)
30
+
31
+ ## [[4.0.4]](https://github.com/rails/webpacker/compare/v4.0.3...v4.0.4) - 2019-05-28
32
+
33
+ - Remove bundler version constraint
34
+
3
35
  ## [[4.0.3]](https://github.com/rails/webpacker/compare/v4.0.2...v4.0.3) - 2019-05-28
4
36
 
5
37
  Please see the diff
6
38
 
39
+ ##### Breaking changes (for pre-existing apps)
40
+
41
+ - [`@babel/polyfill`](https://babeljs.io/docs/en/next/babel-polyfill.html) [doesn't make it possible to provide a smooth migration path from `core-js@2` to `core-js@3`](https://github.com/zloirock/core-js/blob/master/docs/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md#babelpolyfill): for this reason, it was decided to deprecate `@babel/polyfill` in favor of separate inclusion of required parts of `core-js` and `regenerator-runtime`. [#2031](https://github.com/rails/webpacker/pull/2031)
42
+
43
+ In each of your `/packs/*.js` files, change this:
44
+
45
+ ```js
46
+ import '@babel/polyfill'
47
+ ```
48
+
49
+ to this:
50
+
51
+ ```js
52
+ import 'core-js/stable'
53
+ import 'regenerator-runtime/runtime'
54
+ ```
55
+
56
+ Don't forget to install those dependencies directly!
57
+
58
+ ```sh
59
+ yarn add core-js regenerator-runtime
60
+ ```
61
+
7
62
  ## [4.0.2] - 2019-03-06
8
63
 
9
64
  - Bump the version on npm
@@ -14,12 +69,10 @@ Please see the diff
14
69
 
15
70
  - Pre-release version installer
16
71
 
17
-
18
72
  ## [4.0.0] - 2019-03-04
19
73
 
20
74
  No changes in this release. See RC releases for changes.
21
75
 
22
-
23
76
  ## [4.0.0.rc.8] - 2019-03-03
24
77
 
25
78
  ### Fixed
@@ -43,9 +96,9 @@ module.exports = environment.toWebpackConfig()
43
96
  - Reintroduced `context` to the file loader. Reverting the simpler paths change
44
97
 
45
98
  - Updated file loader to have filename based on the path. This change
46
- keeps the old behaviour intact i.e. let people use namespaces for media
47
- inside `app/javascript` and also include media outside of `app/javascript`
48
- with simpler paths, for example from `node_modules` or `app/assets`
99
+ keeps the old behaviour intact i.e. let people use namespaces for media
100
+ inside `app/javascript` and also include media outside of `app/javascript`
101
+ with simpler paths, for example from `node_modules` or `app/assets`
49
102
 
50
103
  ```bash
51
104
  # Files inside app/javascript (i.e. packs source path)
@@ -63,14 +116,12 @@ media/webfonts/fa-brands-400-4b115e11.woff2
63
116
  This change is done so we don't end up paths like `media/_/assets/images/rails_assets-f0f7bbb5ef00110a0dcef7c2cb7d34a6.png` or `media/_/_/node_modules/foo-f0f7bbb5ef00110a0dcef7c2cb7d34a6.png` for media outside of
64
117
  `app/javascript`
65
118
 
66
-
67
119
  ## [4.0.0.rc.7] - 2019-01-25
68
120
 
69
121
  ### Fixed
70
122
 
71
123
  - Webpacker builds test app assets [#1908](https://github.com/rails/webpacker/issues/1908)
72
124
 
73
-
74
125
  ## [4.0.0.rc.6] - 2019-01-25
75
126
 
76
127
  ### Fixed
@@ -116,12 +167,12 @@ fileLoader.use[0].options.context = join(config.source_path) // optional if you
116
167
 
117
168
  - Gems and node dependencies
118
169
 
119
-
120
170
  ## [4.0.0.rc.4] - 2019-01-21
121
171
 
122
172
  ### Added
123
- - `stylesheet_packs_with_chunks_tag` helper, similar to javascript helper but for
124
- loading stylesheets chunks.
173
+
174
+ - `stylesheet_packs_with_chunks_tag` helper, similar to javascript helper but for
175
+ loading stylesheets chunks.
125
176
 
126
177
  ```erb
127
178
  <%= stylesheet_packs_with_chunks_tag 'calendar', 'map', 'data-turbolinks-track': 'reload' %>
@@ -142,15 +193,15 @@ helper otherwise you will get duplicated chunks on the page.
142
193
  # <%= stylesheet_packs_with_chunks_tag 'map' %>
143
194
  ```
144
195
 
145
-
146
196
  ## [4.0.0.rc.3] - 2019-01-17
147
197
 
148
198
  ### Fixed
149
- - Issue with javascript_pack_tag asset duplication [#1898](https://github.com/rails/webpacker/pull/1898)
150
199
 
200
+ - Issue with javascript_pack_tag asset duplication [#1898](https://github.com/rails/webpacker/pull/1898)
151
201
 
152
202
  ### Added
153
- - `javascript_packs_with_chunks_tag` helper, which creates html tags
203
+
204
+ - `javascript_packs_with_chunks_tag` helper, which creates html tags
154
205
  for a pack and all the dependent chunks, when using splitchunks.
155
206
 
156
207
  ```erb
@@ -178,68 +229,77 @@ helper otherwise you will get duplicated chunks on the page.
178
229
  ## [4.0.0.rc.2] - 2018-12-15
179
230
 
180
231
  ### Fixed
181
- - Disable integrity hash generation [#1835](https://github.com/rails/webpacker/issues/1835)
182
232
 
233
+ - Disable integrity hash generation [#1835](https://github.com/rails/webpacker/issues/1835)
183
234
 
184
235
  ## [4.0.0.rc.1] - 2018-12-14
185
236
 
186
237
  ### Breaking changes
187
238
 
188
- - Order of rules changed so you might have to change append to prepend,
239
+ - Order of rules changed so you might have to change append to prepend,
189
240
  depending on how you want to process packs [#1823](https://github.com/rails/webpacker/pull/1823)
190
- ```js
191
- environment.loaders.prepend()
192
- ```
193
- - Separate CSS extraction from build environment [#1625](https://github.com/rails/webpacker/pull/1625)
194
- ```yml
195
- # Extract and emit a css file
196
- extract_css: true
197
- ```
198
- - Separate rule to compile node modules
241
+
242
+ ```js
243
+ environment.loaders.prepend()
244
+ ```
245
+
246
+ - Separate CSS extraction from build environment [#1625](https://github.com/rails/webpacker/pull/1625)
247
+
248
+ ```yml
249
+ # Extract and emit a css file
250
+ extract_css: true
251
+ ```
252
+
253
+ - Separate rule to compile node modules
199
254
  (fixes cases where ES6 libraries were included in the app code) [#1823](https://github.com/rails/webpacker/pull/1823).
200
255
 
201
- In previous versions only application code was transpiled. Now everything in `node_modules` is transpiled with Babel. In some cases it could break your build (known issue with `mapbox-gl` package being broken by Babel, https://github.com/mapbox/mapbox-gl-js/issues/3422).
256
+ In previous versions only application code was transpiled. Now everything in `node_modules` is transpiled with Babel. In some cases it could break your build (known issue with `mapbox-gl` package being broken by Babel, https://github.com/mapbox/mapbox-gl-js/issues/3422).
202
257
 
203
- [`nodeModules` loader](https://github.com/rails/webpacker/pull/1823/files#diff-456094c8451b5774db50028dfecf4aa8) ignores `config.babel.js` and uses hard-coded `'@babel/preset-env', { modules: false }` config.
258
+ [`nodeModules` loader](https://github.com/rails/webpacker/pull/1823/files#diff-456094c8451b5774db50028dfecf4aa8) ignores `config.babel.js` and uses hard-coded `'@babel/preset-env', { modules: false }` config.
204
259
 
205
- To keep previous behavior, remove `nodeModules` loader specifying `environment.loaders.delete('nodeModules');` in your `config/webpack/environment.js` file.
260
+ To keep previous behavior, remove `nodeModules` loader specifying `environment.loaders.delete('nodeModules');` in your `config/webpack/environment.js` file.
206
261
 
207
- - File loader extensions API [#1823](https://github.com/rails/webpacker/pull/1823)
208
- ```yml
209
- # webpacker.yml
210
- static_assets_extensions:
211
- - .pdf
212
- # etc..
213
- ```
262
+ - File loader extensions API [#1823](https://github.com/rails/webpacker/pull/1823)
263
+
264
+ ```yml
265
+ # webpacker.yml
266
+ static_assets_extensions:
267
+ - .pdf
268
+ # etc..
269
+ ```
214
270
 
215
271
  ### Added
216
272
 
217
- - Move `.babelrc` and `.postcssrc` to `.js` variant [#1822](https://github.com/rails/webpacker/pull/1822)
218
- - Use postcss safe parser when optimising css assets [#1822](https://github.com/rails/webpacker/pull/1822)
219
- - Add split chunks api (undocumented)
220
- ```js
221
- const { environment } = require('@rails/webpacker')
222
- // Enable with default config
223
- environment.splitChunks()
224
- // Configure via a callback
225
- environment.splitChunks((config) => Object.assign({}, config, { optimization: { splitChunks: false }}))
226
- ```
227
- - Allow changing static file extensions using webpacker.yml (undocumented)
273
+ - Move `.babelrc` and `.postcssrc` to `.js` variant [#1822](https://github.com/rails/webpacker/pull/1822)
274
+ - Use postcss safe parser when optimising css assets [#1822](https://github.com/rails/webpacker/pull/1822)
275
+ - Add split chunks api (undocumented)
276
+
277
+ ```js
278
+ const { environment } = require('@rails/webpacker')
279
+ // Enable with default config
280
+ environment.splitChunks()
281
+ // Configure via a callback
282
+ environment.splitChunks(config =>
283
+ Object.assign({}, config, { optimization: { splitChunks: false } })
284
+ )
285
+ ```
286
+
287
+ - Allow changing static file extensions using webpacker.yml (undocumented)
228
288
 
229
289
  ## [4.0.0-pre.3] - 2018-10-01
230
290
 
231
291
  ### Added
232
292
 
233
- - Move supported browsers configuration to [.browserslistrc](https://github.com/browserslist/browserslist#queries)
293
+ - Move supported browsers configuration to [.browserslistrc](https://github.com/browserslist/browserslist#queries)
234
294
 
235
295
  ### Breaking changes
236
296
 
237
- - postcss-next is replaced with postcss-preset-env
238
- - babel@7
297
+ - postcss-next is replaced with postcss-preset-env
298
+ - babel@7
239
299
 
240
300
  ### Fixed
241
301
 
242
- - Bring back test env [#1563](https://github.com/rails/webpacker/pull/1563)
302
+ - Bring back test env [#1563](https://github.com/rails/webpacker/pull/1563)
243
303
 
244
304
  Please see a list of [commits](https://github.com/rails/webpacker/compare/2dd68f0273074aadb3f869c4c30369d5e4e3fea7...master)
245
305
 
@@ -249,36 +309,82 @@ Please see a list of [commits](https://github.com/rails/webpacker/compare/2dd68f
249
309
 
250
310
  - Webpack dev server version in installer
251
311
 
252
-
253
312
  ## [4.0.0-pre.1] - 2018-04-2
254
313
 
255
314
  Pre-release to try out webpack 4.0 support
256
315
 
257
316
  ### Added
258
- - Webpack 4.0 support [#1376](https://github.com/rails/webpacker/pull/1316)
317
+
318
+ - Webpack 4.0 support [#1376](https://github.com/rails/webpacker/pull/1316)
319
+
320
+ ### Fixed
321
+
322
+ - Remove compilation digest file if webpack command fails[#1398](https://github.com/rails/webpacker/issues/1398)
323
+
324
+ ## [3.6.0] - 2019-03-06
325
+
326
+ See changes: https://github.com/rails/webpacker/compare/88a253ed42966eb2d5c997435e9396881513bce1...3-x-stable
327
+
328
+ ## [3.5.5] - 2018-07-09
329
+
330
+ See changes: https://github.com/rails/webpacker/compare/e8b197e36c77181ca2e4765c620faea59dcd0351...3-x-stable
331
+
332
+ ### Added
333
+
334
+ - On CI, sort files & check modified w/ digest intead of mtime[#1522](https://github.com/rails/webpacker/pull/1522)
335
+
336
+ ## [3.5.3] - 2018-05-03
259
337
 
260
338
  ### Fixed
261
- - Remove compilation digest file if webpack command fails[#1398](https://github.com/rails/webpacker/issues/1398)
262
339
 
340
+ - Relax Javascript package dependencies [#1466](https://github.com/rails/webpacker/pull/1466#issuecomment-386336605)
341
+
342
+ ## [3.5.2] - 2018-04-29
343
+
344
+ - Pin Javascript package to 3.5.x
345
+
346
+ ## [3.5.1] - 2018-04-29
347
+
348
+ - Upgraded gems and Javascript packages
349
+
350
+ ## [3.5.0] - 2018-04-29
351
+
352
+ ### Fixed
353
+
354
+ - Remove compilation digest file if webpack command fails [#1399](https://github.com/rails/webpacker/pull/1399)
355
+ - Handle http dev_server setting properly in the proxy [#1420](https://github.com/rails/webpacker/pull/1420)
356
+ - Use correct protocol [#1425](https://github.com/rails/webpacker/pull/1425)
357
+
358
+ ### Added
359
+
360
+ - `image_pack_tag` helper [#1400](https://github.com/rails/webpacker/pull/1400)
361
+ - devserver proxy for custom environments [#1415](https://github.com/rails/webpacker/pull/1415)
362
+ - Rails webpacker:info task [#1416](https://github.com/rails/webpacker/pull/1416)
363
+ - Include `RAILS_RELATIVE_URL_ROOT` environment variable in publicPath [#1428](https://github.com/rails/webpacker/pull/1428)
263
364
 
264
- Please refer to [3-x-stable](https://github.com/rails/webpacker/tree/3-x-stable) branch
265
- for further releases and changelogs:
365
+ Complete list of changes: [#1464](https://github.com/rails/webpacker/pull/1464)
366
+
367
+ ## [3.4.3] - 2018-04-3
368
+
369
+ ### Fixed
370
+
371
+ - Lock webpacker version in installer [#1401](https://github.com/rails/webpacker/issues/1401)
266
372
 
267
373
  ## [3.4.1] - 2018-03-24
268
374
 
269
375
  ### Fixed
270
- - Yarn integrity check in development [#1374](https://github.com/rails/webpacker/issues/1374)
271
376
 
377
+ - Yarn integrity check in development [#1374](https://github.com/rails/webpacker/issues/1374)
272
378
 
273
379
  ## [3.4.0] - 2018-03-23
274
380
 
275
381
  **Please use 3.4.1 instead**
276
382
 
277
383
  ### Added
278
- - Support for custom Rails environments [#1359](https://github.com/rails/webpacker/pull/1359)
279
384
 
280
- *This could break the compilation if you set NODE_ENV to custom environment. Now, NODE_ENV only understands production or development mode*
385
+ - Support for custom Rails environments [#1359](https://github.com/rails/webpacker/pull/1359)
281
386
 
387
+ _This could break the compilation if you set NODE_ENV to custom environment. Now, NODE_ENV only understands production or development mode_
282
388
 
283
389
  ## [3.3.1] - 2018-03-12
284
390
 
@@ -301,6 +407,7 @@ for further releases and changelogs:
301
407
  ```
302
408
  bundle exec rails webpacker:binstubs
303
409
  ```
410
+
304
411
  - set function is now removed from plugins and loaders, please use `append` or `prepend`
305
412
 
306
413
  ```js
@@ -314,6 +421,7 @@ environment.loaders.append('json', {
314
421
  ```
315
422
 
316
423
  ### Fixed
424
+
317
425
  - Limit ts-loader to 3.5.0 until webpack 4 support [#1308](https://github.com/rails/webpacker/pull/1308)
318
426
  - Custom env support [#1304](https://github.com/rails/webpacker/pull/1304)
319
427
 
@@ -347,7 +455,6 @@ And, bunch of bug fixes [See changes](https://github.com/rails/webpacker/compare
347
455
 
348
456
  - Revert file loader [#1196](https://github.com/rails/webpacker/pull/1196)
349
457
 
350
-
351
458
  ## [3.2.0] - 2017-12-16
352
459
 
353
460
  ### To upgrade:
@@ -377,11 +484,11 @@ into your `config/webpack/loaders/`
377
484
  directory and add it to webpack build from `config/webpack/environment.js`
378
485
 
379
486
  ```js
380
- const erb = require('./loaders/erb')
381
- const elm = require('./loaders/elm')
382
- const typescript = require('./loaders/typescript')
383
- const vue = require('./loaders/vue')
384
- const coffee = require('./loaders/coffee')
487
+ const erb = require('./loaders/erb')
488
+ const elm = require('./loaders/elm')
489
+ const typescript = require('./loaders/typescript')
490
+ const vue = require('./loaders/vue')
491
+ const coffee = require('./loaders/coffee')
385
492
 
386
493
  environment.loaders.append('coffee', coffee)
387
494
  environment.loaders.append('vue', vue)
@@ -404,19 +511,16 @@ plugins:
404
511
 
405
512
  - `postcss-import` in place of `postcss-smart-import`
406
513
 
407
-
408
514
  ### Removed (npm module)
409
515
 
410
516
  - `postcss-smart-import`, `coffee-loader`, `url-loader`, `rails-erb-loader` as dependencies
411
517
 
412
- - `publicPath` from file loader [#1107](https://github.com/rails/webpacker/pull/1107)
413
-
518
+ - `publicPath` from file loader [#1107](https://github.com/rails/webpacker/pull/1107)
414
519
 
415
520
  ### Fixed (npm module)
416
521
 
417
522
  - Return native array type for `ConfigList` [#1098](https://github.com/rails/webpacker/pull/1098)
418
523
 
419
-
420
524
  ### Added (Gem)
421
525
 
422
526
  - New `asset_pack_url` helper [#1102](https://github.com/rails/webpacker/pull/1102)
@@ -430,17 +534,14 @@ bundle exec rails webpacker:install:coffee
430
534
 
431
535
  - Resolved paths from webpacker.yml to compiler watched list
432
536
 
433
-
434
537
  ## [3.1.1] - 2017-12-11
435
538
 
436
539
  ### Fixed
437
540
 
438
541
  - Include default webpacker.yml config inside npm package
439
542
 
440
-
441
543
  ## [3.1.0] - 2017-12-11
442
544
 
443
-
444
545
  ### Added (npm module)
445
546
 
446
547
  - Expose base config from environment
@@ -450,7 +551,8 @@ environment.config.set('resolve.extensions', ['.foo', '.bar'])
450
551
  environment.config.set('output.filename', '[name].js')
451
552
  environment.config.delete('output.chunkFilename')
452
553
  environment.config.get('resolve')
453
- environment.config.merge({ output: {
554
+ environment.config.merge({
555
+ output: {
454
556
  filename: '[name].js'
455
557
  }
456
558
  })
@@ -459,7 +561,7 @@ environment.config.merge({ output: {
459
561
  - Expose new API's for loaders and plugins to insert at position
460
562
 
461
563
  ```js
462
- const jsonLoader = {
564
+ const jsonLoader = {
463
565
  test: /\.json$/,
464
566
  exclude: /node_modules/,
465
567
  loader: 'json-loader'
@@ -467,8 +569,8 @@ const jsonLoader = {
467
569
 
468
570
  environment.loaders.append('json', jsonLoader)
469
571
  environment.loaders.prepend('json', jsonLoader)
470
- environment.loaders.insert('json', jsonLoader, { after: 'style' } )
471
- environment.loaders.insert('json', jsonLoader, { before: 'babel' } )
572
+ environment.loaders.insert('json', jsonLoader, { after: 'style' })
573
+ environment.loaders.insert('json', jsonLoader, { before: 'babel' })
472
574
 
473
575
  // Update a plugin
474
576
  const manifestPlugin = environment.plugins.get('Manifest')
@@ -476,10 +578,14 @@ manifestPlugin.opts.writeToFileEmit = false
476
578
 
477
579
  // Update coffee loader to use coffeescript 2
478
580
  const babelLoader = environment.loaders.get('babel')
479
- environment.loaders.insert('coffee', {
480
- test: /\.coffee(\.erb)?$/,
481
- use: babelLoader.use.concat(['coffee-loader'])
482
- }, { before: 'json' })
581
+ environment.loaders.insert(
582
+ 'coffee',
583
+ {
584
+ test: /\.coffee(\.erb)?$/,
585
+ use: babelLoader.use.concat(['coffee-loader'])
586
+ },
587
+ { before: 'json' }
588
+ )
483
589
  ```
484
590
 
485
591
  - Expose `resolve.modules` paths like loaders and plugins
@@ -491,8 +597,8 @@ environment.resolvedModules.append('vendor', 'vendor')
491
597
  - Enable sourcemaps in `style` and `css` loader
492
598
 
493
599
  - Separate `css` and `sass` loader for easier configuration. `style` loader is now
494
- `css` loader, which resolves `.css` files and `sass` loader resolves `.scss` and `.sass`
495
- files.
600
+ `css` loader, which resolves `.css` files and `sass` loader resolves `.scss` and `.sass`
601
+ files.
496
602
 
497
603
  ```js
498
604
  // Enable css modules with sass loader
@@ -528,7 +634,6 @@ dev_server:
528
634
 
529
635
  - Add url loader to process and embed smaller static files
530
636
 
531
-
532
637
  ### Removed
533
638
 
534
639
  - resolve url loader [#1042](https://github.com/rails/webpacker/issues/1042)
@@ -545,8 +650,7 @@ WEBPACKER_PRECOMPILE=false bundle exec rails assets:precompile
545
650
  - Use `WEBPACKER_ASSET_HOST` instead of `ASSET_HOST` for CDN
546
651
 
547
652
  - Alias `webpacker:compile` task to `assets:precompile` if is not defined so it works
548
- without sprockets
549
-
653
+ without sprockets
550
654
 
551
655
  ## [3.0.2] - 2017-10-04
552
656
 
@@ -581,7 +685,7 @@ Webpacker.manifest.lookup!('foo.js')
581
685
  - Inline CLI args for dev server binstub, use env variables instead
582
686
 
583
687
  - Coffeescript as core dependency. You have to manually add coffeescript now, if you are using
584
- it in your app.
688
+ it in your app.
585
689
 
586
690
  ```bash
587
691
  yarn add coffeescript@1.12.7
@@ -613,8 +717,7 @@ yarn add coffeescript
613
717
  ### Removed
614
718
 
615
719
  - `watchContentBase` from devServer config so it doesn't unncessarily trigger
616
- live reload when manifest changes. If you have applied this workaround from [#724](https://github.com/rails/webpacker/issues/724), please revert the change from `config/webpack/development.js` since this is now fixed.
617
-
720
+ live reload when manifest changes. If you have applied this workaround from [#724](https://github.com/rails/webpacker/issues/724), please revert the change from `config/webpack/development.js` since this is now fixed.
618
721
 
619
722
  ## [3.0.0] - 2017-08-30
620
723
 
@@ -623,9 +726,9 @@ live reload when manifest changes. If you have applied this workaround from [#72
623
726
  - `resolved_paths` option to allow adding additional paths webpack should lookup when resolving modules
624
727
 
625
728
  ```yml
626
- # config/webpacker.yml
627
- # Additional paths webpack should lookup modules
628
- resolved_paths: [] # empty by default
729
+ # config/webpacker.yml
730
+ # Additional paths webpack should lookup modules
731
+ resolved_paths: [] # empty by default
629
732
  ```
630
733
 
631
734
  - `Webpacker::Compiler.fresh?` and `Webpacker::Compiler.stale?` answer the question of whether compilation is needed.
@@ -678,8 +781,8 @@ live reload when manifest changes. If you have applied this workaround from [#72
678
781
  - Serve assets using `localhost` from dev server - [#424](https://github.com/rails/webpacker/issues/424)
679
782
 
680
783
  ```yml
681
- dev_server:
682
- host: localhost
784
+ dev_server:
785
+ host: localhost
683
786
  ```
684
787
 
685
788
  - On Windows, `ruby bin/webpacker` and `ruby bin/webpacker-dev-server` will now bypass yarn, and execute via `node_modules/.bin` directly - [#584](https://github.com/rails/webpacker/pull/584)
@@ -689,21 +792,21 @@ live reload when manifest changes. If you have applied this workaround from [#72
689
792
  - Add `compile` and `cache_path` options to `config/webpacker.yml` for configuring lazy compilation of packs when a file under tracked paths is changed [#503](https://github.com/rails/webpacker/pull/503). To enable expected behavior, update `config/webpacker.yml`:
690
793
 
691
794
  ```yaml
692
- default: &default
693
- cache_path: tmp/cache/webpacker
694
- test:
695
- compile: true
795
+ default: &default
796
+ cache_path: tmp/cache/webpacker
797
+ test:
798
+ compile: true
696
799
 
697
- development:
698
- compile: true
800
+ development:
801
+ compile: true
699
802
 
700
- production:
701
- compile: false
803
+ production:
804
+ compile: false
702
805
  ```
703
806
 
704
807
  - Make test compilation cacheable and configurable so that the lazy compilation
705
- only triggers if files are changed under tracked paths.
706
- Following paths are watched by default -
808
+ only triggers if files are changed under tracked paths.
809
+ Following paths are watched by default -
707
810
 
708
811
  ```rb
709
812
  ["app/javascript/**/*", "yarn.lock", "package.json", "config/webpack/**/*"]
@@ -719,6 +822,7 @@ Following paths are watched by default -
719
822
  ## [2.0] - 2017-05-24
720
823
 
721
824
  ### Fixed
825
+
722
826
  - Update `.babelrc` to fix compilation issues - [#306](https://github.com/rails/webpacker/issues/306)
723
827
 
724
828
  - Duplicated asset hosts - [#320](https://github.com/rails/webpacker/issues/320), [#397](https://github.com/rails/webpacker/pull/397)
@@ -731,24 +835,28 @@ Following paths are watched by default -
731
835
 
732
836
  - ARGV support for `webpack-dev-server` - [#286](https://github.com/rails/webpacker/issues/286)
733
837
 
734
-
735
838
  ### Added
839
+
736
840
  - [Elm](http://elm-lang.org) support. You can now add Elm support via the following methods:
841
+
737
842
  - New app: `rails new <app> --webpack=elm`
738
843
  - Within an existing app: `rails webpacker:install:elm`
739
844
 
740
845
  - Support for custom `public_output_path` paths independent of `source_entry_path` in `config/webpacker.yml`. `output` is also now relative to `public/`. - [#397](https://github.com/rails/webpacker/pull/397)
741
846
 
742
- Before (compile to `public/packs`):
743
- ```yaml
744
- source_entry_path: packs
745
- public_output_path: packs
746
- ```
747
- After (compile to `public/sweet/js`):
748
- ```yaml
749
- source_entry_path: packs
750
- public_output_path: sweet/js
751
- ```
847
+ Before (compile to `public/packs`):
848
+
849
+ ```yaml
850
+ source_entry_path: packs
851
+ public_output_path: packs
852
+ ```
853
+
854
+ After (compile to `public/sweet/js`):
855
+
856
+ ```yaml
857
+ source_entry_path: packs
858
+ public_output_path: sweet/js
859
+ ```
752
860
 
753
861
  - `https` option to use `https` mode, particularly on platforms like - https://community.c9.io/t/running-a-rails-app/1615 or locally - [#176](https://github.com/rails/webpacker/issues/176)
754
862
 
@@ -757,26 +865,29 @@ Following paths are watched by default -
757
865
  ```json
758
866
  {
759
867
  "presets": [
760
- ["env", {
761
- "modules": false,
762
- "targets": {
763
- "browsers": "> 1%",
764
- "uglify": true
765
- },
766
- "useBuiltIns": true
767
- }]
868
+ [
869
+ "env",
870
+ {
871
+ "modules": false,
872
+ "targets": {
873
+ "browsers": "> 1%",
874
+ "uglify": true
875
+ },
876
+ "useBuiltIns": true
877
+ }
878
+ ]
768
879
  ],
769
880
 
770
881
  "plugins": [
771
882
  "syntax-dynamic-import",
772
- "transform-class-properties", { "spec": true }
883
+ "transform-class-properties",
884
+ { "spec": true }
773
885
  ]
774
886
  }
775
887
  ```
776
888
 
777
889
  - Source-map support for production bundle
778
890
 
779
-
780
891
  #### Breaking Change
781
892
 
782
893
  - Consolidate and flatten `paths.yml` and `development.server.yml` config into one file - `config/webpacker.yml` - [#403](https://github.com/rails/webpacker/pull/403). This is a breaking change and requires you to re-install webpacker and cleanup old configuration files.
@@ -791,14 +902,16 @@ Following paths are watched by default -
791
902
  rm config/webpack/development.server.js
792
903
  ```
793
904
 
794
- __Warning__: For now you also have to add a pattern in `.gitignore` by hand.
905
+ **Warning**: For now you also have to add a pattern in `.gitignore` by hand.
906
+
795
907
  ```diff
796
908
  /public/packs
797
909
  +/public/packs-test
798
910
  /node_modules
799
- ```
911
+ ```
800
912
 
801
913
  ## [1.2] - 2017-04-27
914
+
802
915
  Some of the changes made requires you to run below commands to install new changes.
803
916
 
804
917
  ```
@@ -806,13 +919,14 @@ bundle update webpacker
806
919
  bundle exec rails webpacker:install
807
920
  ```
808
921
 
809
-
810
922
  ### Fixed
923
+
811
924
  - Support Spring - [#205](https://github.com/rails/webpacker/issues/205)
812
925
 
813
926
  ```ruby
814
927
  Spring.after_fork { Webpacker.bootstrap } if defined?(Spring)
815
928
  ```
929
+
816
930
  - Check node version and yarn before installing webpacker - [#217](https://github.com/rails/webpacker/issues/217)
817
931
 
818
932
  - Include webpacker helper to views - [#172](https://github.com/rails/webpacker/issues/172)
@@ -825,27 +939,28 @@ bundle exec rails webpacker:install
825
939
 
826
940
  - Move babel presets and plugins to .babelrc - [#202](https://github.com/rails/webpacker/issues/202)
827
941
 
828
-
829
942
  ### Added
943
+
830
944
  - A changelog - [#211](https://github.com/rails/webpacker/issues/211)
831
945
  - Minimize CSS assets - [#218](https://github.com/rails/webpacker/issues/218)
832
946
  - Pack namespacing support - [#201](https://github.com/rails/webpacker/pull/201)
833
947
 
834
948
  For example:
949
+
835
950
  ```
836
951
  app/javascript/packs/admin/hello_vue.js
837
952
  app/javascript/packs/admin/hello.vue
838
953
  app/javascript/packs/hello_vue.js
839
954
  app/javascript/packs/hello.vue
840
955
  ```
956
+
841
957
  - Add tree-shaking support - [#250](https://github.com/rails/webpacker/pull/250)
842
958
  - Add initial test case by @kimquy [#259](https://github.com/rails/webpacker/pull/259)
843
959
  - Compile assets before test:controllers and test:system
844
960
 
845
-
846
961
  ### Removed
847
- - Webpack watcher - [#295](https://github.com/rails/webpacker/pull/295)
848
962
 
963
+ - Webpack watcher - [#295](https://github.com/rails/webpacker/pull/295)
849
964
 
850
965
  ## [1.1] - 2017-03-24
851
966
 
@@ -860,10 +975,10 @@ bundle exec rails webpacker:install:[react, angular, vue]
860
975
  ```
861
976
 
862
977
  ### Added (breaking changes)
978
+
863
979
  - Static assets support - [#153](https://github.com/rails/webpacker/pull/153)
864
980
  - Advanced webpack configuration - [#153](https://github.com/rails/webpacker/pull/153)
865
981
 
866
-
867
982
  ### Removed
868
983
 
869
984
  ```rb