webpacker 6.0.0.beta → 6.0.0.beta.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/jest.yml +1 -1
  3. data/.github/workflows/js-lint.yml +1 -1
  4. data/.github/workflows/ruby.yml +9 -6
  5. data/6_0_upgrade.md +29 -10
  6. data/CHANGELOG.md +2 -0
  7. data/CONTRIBUTING.md +1 -1
  8. data/Gemfile.lock +7 -5
  9. data/README.md +115 -52
  10. data/config/README.md +3 -0
  11. data/config/webpacker.yml +1 -0
  12. data/docs/troubleshooting.md +160 -0
  13. data/lib/install/config/webpacker.yml +4 -2
  14. data/lib/install/{javascript/packs → packs/entrypoints}/application.js +2 -2
  15. data/lib/install/template.rb +3 -3
  16. data/lib/webpacker/commands.rb +2 -1
  17. data/lib/webpacker/compiler.rb +2 -2
  18. data/lib/webpacker/dev_server_runner.rb +2 -0
  19. data/lib/webpacker/helper.rb +13 -43
  20. data/lib/webpacker/version.rb +1 -1
  21. data/lib/webpacker/webpack_runner.rb +1 -0
  22. data/package.json +1 -1
  23. data/package/__tests__/development.js +2 -1
  24. data/package/__tests__/index.js +9 -0
  25. data/package/environments/__tests__/base.js +4 -4
  26. data/package/environments/base.js +7 -4
  27. data/package/environments/development.js +1 -0
  28. data/package/environments/production.js +29 -22
  29. data/package/index.js +3 -3
  30. data/package/rules/file.js +5 -3
  31. data/package/rules/index.js +3 -2
  32. data/package/rules/raw.js +5 -0
  33. data/package/rules/stylus.js +26 -0
  34. data/package/utils/helpers.js +4 -2
  35. data/test/configuration_test.rb +2 -2
  36. data/test/dev_server_runner_test.rb +10 -2
  37. data/test/helper_test.rb +33 -39
  38. data/test/mounted_app/test/dummy/config/webpacker.yml +2 -2
  39. data/test/test_app/app/{javascript/packs → packs/entrypoints}/application.js +1 -1
  40. data/test/test_app/app/{javascript/packs → packs/entrypoints}/multi_entry.css +0 -0
  41. data/test/test_app/app/{javascript/packs → packs/entrypoints}/multi_entry.js +0 -0
  42. data/test/test_app/config/webpacker.yml +2 -2
  43. data/test/test_app/public/packs/manifest.json +7 -0
  44. metadata +17 -13
  45. data/lib/install/javascript/packs/application.css +0 -9
  46. data/package/rules/svg.js +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 19faa9561fccec8279b1d8031c2a386c44554ba0f24acc048ec4856853900fc5
4
- data.tar.gz: a10901426f6b8ff524c243ddc21392ada8cf189fd85d63d3a6b558cd71b4237f
3
+ metadata.gz: eee103ac302f31dfd3aab8246c08b6f38409be2bb226c9980b2f3ab55d8222bf
4
+ data.tar.gz: 6bd2f9be419e82dbbcc2a3142bd1f2f9c0ff7ea80373143f0eb60dd1fc118a7c
5
5
  SHA512:
6
- metadata.gz: cda09944b075aa8da83a0c568f656d63b040b4c110b5a87f1e5962b60c24e63d70020a4648c1133674611a64178f048ad081128ea891df1950f82957e7a2a5da
7
- data.tar.gz: aa72ec1ac73614d32405ca4dfbfbd05e910167599b30e9ed91b3360bdbc0ba12db577fb55096942f6e1a468e21e1e05ccf8bfc5b80596fb3f68e187a73fe1a63
6
+ metadata.gz: 98cb1515161e7787a62a2c53cc617a5ae7b754a8d47bbecd32bf55f5707c5238437ef5df64fbe9798183825e1b209ed918095ed0bcf59566ab9a55fbcfdfdd27
7
+ data.tar.gz: c1cde3f92061eb6f1fe1c23506c0f2299b7a4c0c7d1b046a168630fd15e7c217ab4dbdfdabef8acb39e743058b41b1912eb3ede1320b07aa945ea4e7ea59a319
@@ -8,7 +8,7 @@ jobs:
8
8
  strategy:
9
9
  matrix:
10
10
  os: [ubuntu-latest]
11
- node: [10.x, 12.x, 14.x]
11
+ node: [10.x, 12.x, 14.x, 15.x]
12
12
 
13
13
  runs-on: ${{ matrix.os }}
14
14
 
@@ -9,7 +9,7 @@ jobs:
9
9
  strategy:
10
10
  matrix:
11
11
  os: [ubuntu-latest]
12
- node: [12.x]
12
+ node: [14.x]
13
13
 
14
14
  runs-on: ${{ matrix.os }}
15
15
 
@@ -18,7 +18,8 @@ jobs:
18
18
  2.4,
19
19
  2.5,
20
20
  2.6,
21
- 2.7
21
+ 2.7,
22
+ 3.0
22
23
  ]
23
24
  gemfile: [
24
25
  "gemfiles/Gemfile-rails.5.2.x",
@@ -27,13 +28,11 @@ jobs:
27
28
  exclude:
28
29
  - ruby: "2.4"
29
30
  gemfile: gemfiles/Gemfile-rails.6.0.x
31
+ - ruby: "3.0"
32
+ gemfile: gemfiles/Gemfile-rails.5.2.x
30
33
  experimental: [false]
31
34
  include:
32
- - ruby: head
33
- os: ubuntu-latest
34
- gemfile: gemfiles/Gemfile-rails.6.0.x
35
- experimental: true
36
- - ruby: head
35
+ - ruby: 2.5
37
36
  os: ubuntu-latest
38
37
  gemfile: gemfiles/Gemfile-rails-edge
39
38
  experimental: true
@@ -45,6 +44,10 @@ jobs:
45
44
  os: ubuntu-latest
46
45
  gemfile: gemfiles/Gemfile-rails-edge
47
46
  experimental: true
47
+ - ruby: 3.0
48
+ os: ubuntu-latest
49
+ gemfile: gemfiles/Gemfile-rails-edge
50
+ experimental: true
48
51
 
49
52
  steps:
50
53
  - uses: actions/checkout@v2
data/6_0_upgrade.md CHANGED
@@ -6,17 +6,20 @@ straightforward.
6
6
 
7
7
  ## Preparation
8
8
 
9
- - Rename `config/webpack` to `config/webpack_old`
10
- - Rename `config/webpacker.yml` to `config/webpacker_old.yml`
11
- - Upgrade webpacker
9
+ 1. If your `source_path` is `app/javascript`, rename it to `app/packs`
10
+ 2. If your `source_entry_path` is `app/javascript/packs`, rename it to `app/packs/entrypoints`
11
+ 3. Rename `config/webpack` to `config/webpack_old`
12
+ 4. Rename `config/webpacker.yml` to `config/webpacker_old.yml`
13
+ 5. Uninstall the current version of `webpack-dev-server`: `yarn remove webpack-dev-server`
14
+ 6. Upgrade webpacker
12
15
 
13
16
  ```ruby
14
17
  # Gemfile
15
- gem 'webpacker', '~> 6.x'
18
+ gem 'webpacker', '~> 6.0.0.pre.2'
16
19
  ```
17
20
 
18
- ```
19
- bundle
21
+ ```bash
22
+ bundle install
20
23
  ```
21
24
 
22
25
  ```bash
@@ -27,12 +30,15 @@ straightforward.
27
30
  bundle exec rails webpacker:install
28
31
  ```
29
32
 
30
- - Change `javascript_pack_tag` and `stylesheet_pack_tag` to `javascript_packs_with_chunks_tag` and
31
- `stylesheet_packs_with_chunks_tag`
33
+ - Change `javascript_packs_with_chunks_tag` and `stylesheet_packs_with_chunks_tag` to `javascript_pack_tag` and
34
+ `stylesheet_pack_tag`.
32
35
 
33
- - If you are using any integrations like css, react or typescript. Please see https://github.com/rails/webpacker#integrations section on how they work in v6.0
36
+ 7. If you are using any integrations like `css`, `React` or `TypeScript`. Please see https://github.com/rails/webpacker#integrations section on how they work in v6.0.
34
37
 
35
- - Copy over any custom webpack config from `config/webpack_old`
38
+ 8. Copy over any custom webpack config from `config/webpack_old`
39
+
40
+ - Common code previously called 'environment' changed to 'base'
41
+ - import `environment` changed name to `webpackConfig`.
36
42
 
37
43
  ```js
38
44
  // config/webpack/base.js
@@ -41,3 +47,16 @@ straightforward.
41
47
 
42
48
  module.exports = merge(webpackConfig, customConfig)
43
49
  ```
50
+
51
+ 9. Copy over custom browserlist config from `.browserlistrc` if it exists into the `"browserlist"` key in `package.json` and remove `.browserslistrc`.
52
+
53
+ 10. `extensions` was removed from the webpacker.yml file. Move custom extensions to
54
+ your configuration by by merging an object like this. For more details, see docs for
55
+ [Webpack Configuration](https://github.com/rails/webpacker/blob/master/README.md#webpack-configuration)
56
+ ```js
57
+ {
58
+ resolve: {
59
+ extensions: ['.ts', '.tsx']
60
+ }
61
+ }
62
+ ```
data/CHANGELOG.md CHANGED
@@ -17,6 +17,8 @@ environment.loaders.append('nodeModules', nodeModules)
17
17
  - Changes `@babel/preset-env` modules option to `'auto'` per recommendation in the Babel docs [#2709](https://github.com/rails/webpacker/pull/2709)
18
18
  - Adds experimental Yarn 2 support. Note you must manually set `nodeLinker: node-modules` in your `.yarnrc.yml`.
19
19
 
20
+ - Fixes dev server issues [#2898](https://github.com/rails/webpacker/pull/2898)
21
+
20
22
  ### Breaking changes
21
23
 
22
24
  - Simple webpack config
data/CONTRIBUTING.md CHANGED
@@ -9,7 +9,7 @@ yarn
9
9
  ```
10
10
 
11
11
  ## Making sure your changes pass all tests
12
- There are a number of automated checks which run on Github Actions when a pull request is created.
12
+ There are a number of automated checks which run on GitHub Actions when a pull request is created.
13
13
  You can run those checks on your own locally to make sure that your changes would not break the CI build.
14
14
 
15
15
  ### 1. Check the code for JavaScript style violations
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- webpacker (6.0.0.beta)
4
+ webpacker (6.0.0.beta.5)
5
5
  activesupport (>= 5.2)
6
6
  rack-proxy (>= 0.6.1)
7
7
  railties (>= 5.2)
@@ -85,14 +85,16 @@ GEM
85
85
  method_source (1.0.0)
86
86
  mimemagic (0.3.5)
87
87
  mini_mime (1.0.2)
88
- mini_portile2 (2.4.0)
89
- minitest (5.14.1)
88
+ mini_portile2 (2.5.0)
89
+ minitest (5.14.3)
90
90
  nio4r (2.5.2)
91
- nokogiri (1.10.10)
92
- mini_portile2 (~> 2.4.0)
91
+ nokogiri (1.11.1)
92
+ mini_portile2 (~> 2.5.0)
93
+ racc (~> 1.4)
93
94
  parallel (1.19.2)
94
95
  parser (2.7.2.0)
95
96
  ast (~> 2.4.1)
97
+ racc (1.5.2)
96
98
  rack (2.2.3)
97
99
  rack-proxy (0.6.5)
98
100
  rack
data/README.md CHANGED
@@ -59,13 +59,13 @@ in which case you may not even need the asset pipeline. This is mostly relevant
59
59
  - Rails view helpers
60
60
  - Extensible and configurable
61
61
 
62
- ### Optional support\*
62
+ ### Optional support
63
63
 
64
64
  _requires extra packages to be installed_
65
65
 
66
- - Stylesheets - SASS, LESS and CSS, PostCSS
67
- - Coffeescript
68
- - Typescript
66
+ - Stylesheets - Sass, Less, Stylus and Css, PostCSS
67
+ - CoffeeScript
68
+ - TypeScript
69
69
  - React
70
70
 
71
71
  ## Installation
@@ -108,7 +108,8 @@ yarn upgrade
108
108
  When `package.json` and/or `yarn.lock` changes, such as when pulling down changes to your local environment in a team settings, be sure to keep your NPM packages up-to-date:
109
109
 
110
110
  ```bash
111
- yarn install
111
+ # default for `yarn` is to install
112
+ yarn
112
113
  ```
113
114
 
114
115
  ### Usage
@@ -116,9 +117,9 @@ yarn install
116
117
  Once installed, you can start writing modern ES6-flavored JavaScript apps right away:
117
118
 
118
119
  ```yml
119
- app/javascript:
120
- ├── packs:
121
- │ # only webpack entry files here
120
+ app/packs:
121
+ ├── entrypoints:
122
+ │ # Only webpack entry files here
122
123
  │ └── application.js
123
124
  │ └── application.css
124
125
  └── src:
@@ -129,23 +130,50 @@ app/javascript:
129
130
  └── logo.svg
130
131
  ```
131
132
 
132
- You can then link the JavaScript pack in Rails views using the `javascript_packs_with_chunks_tag` helper. If you have styles imported in your pack file, you can link them by using `stylesheet_packs_with_chunks_tag`:
133
+ You can then link the JavaScript pack in Rails views using the `javascript_pack_tag` helper. If you have styles imported in your pack file, you can link them by using `stylesheet_packs_with_chunks_tag`:
133
134
 
134
135
  ```erb
135
- <%= javascript_packs_with_chunks_tag 'application' %>
136
+ <%= javascript_pack_tag 'application' %>
136
137
  <%= stylesheet_packs_with_chunks_tag 'application' %>
137
138
  ```
138
139
 
139
- If you want to link a static asset for `<link rel="prefetch">` or `<img />` tag, you
140
- can use the `asset_pack_path` helper:
141
-
140
+ If you want to link a static asset for `<img />` tag, you can use the `asset_pack_path` helper:
142
141
  ```erb
143
- <link rel="prefetch" href="<%= asset_pack_path 'application.css' %>" />
144
142
  <img src="<%= asset_pack_path 'images/logo.svg' %>" />
145
143
  ```
146
144
 
145
+ Or use the dedicated helper:
146
+ ```erb
147
+ <%= image_pack_tag 'application.png', size: '16x10', alt: 'Edit Entry' %>
148
+ <%= image_pack_tag 'picture.png', srcset: { 'picture-2x.png' => '2x' } %>
149
+ ```
150
+
151
+ If you want to create a favicon:
152
+ ```erb
153
+ <%= favicon_pack_tag 'mb-icon.png', rel: 'apple-touch-icon', type: 'image/png' %>
154
+ ```
155
+
156
+ If you want to preload a static asset in your `<head>`, you can use the `preload_pack_asset` helper:
157
+ ```erb
158
+ <%= preload_pack_asset 'fonts/fa-regular-400.woff2' %>
159
+ ```
160
+
161
+ If you want to use images in your stylesheets:
162
+
163
+ ```css
164
+ .foo {
165
+ background-image: url('../images/logo.svg')
166
+ }
167
+ ```
168
+
169
+ Note, if you are using server-side rendering of JavaScript with dynamic code-spliting,
170
+ as is often done with extensions to Webpacker, like [React on Rails](https://github.com/shakacode/react_on_rails)
171
+ your JavaScript should create the link prefetch HTML tags that you will use, so you won't
172
+ need to use to `asset_pack_path` in those circumstances.
173
+
147
174
  **Note:** In order for your styles or static assets files to be available in your view,
148
- you would need to link them in your "pack" or entry file.
175
+ you would need to link them in your "pack" or entry file. Otherwise, Webpack won't know
176
+ to package up those files.
149
177
 
150
178
  ### Development
151
179
 
@@ -157,11 +185,20 @@ are loaded based on your environment.
157
185
  In development, Webpacker compiles on demand rather than upfront by default. This
158
186
  happens when you refer to any of the pack assets using the Webpacker helper methods.
159
187
  This means that you don't have to run any separate processes. Compilation errors are logged
160
- to the standard Rails log.
188
+ to the standard Rails log. However, this auto-compilation happens when a web request
189
+ is made that requires an updated webpack build, not when files change. Thus, that can
190
+ be painfully slow for front-end development in this default way. Instead, you should either
191
+ run the `bin/webpack --watch` or run `./bin/webpack-dev-server`
192
+
193
+ If you want to use live code reloading, or you have enough JavaScript that on-demand compilation is too slow, you'll need to run `./bin/webpack-dev-server` or `ruby ./bin/webpack-dev-server`.
194
+ Windows users will need to run these commands in a terminal separate from `bundle exec rails s`.
195
+ This process will watch for changes in the `app/packs/entrypoints/*.js` files and automatically
196
+ reload the browser to match. This feature is also known as
197
+ [Hot Module Replacement](https://webpack.js.org/concepts/hot-module-replacement/).
161
198
 
162
- If you want to use live code reloading, or you have enough JavaScript that on-demand compilation is too slow, you'll need to run `./bin/webpack-dev-server` or `ruby ./bin/webpack-dev-server`. Windows users will need to run these commands
163
- in a terminal separate from `bundle exec rails s`. This process will watch for changes
164
- in the `app/javascript/packs/*.js` files and automatically reload the browser to match.
199
+ HMR is only the first step to running "Fast Refresh" with React. For more information
200
+ on how to configure rails/webpacker for Fast Refresh with React, see article
201
+ [HMR and React Hot Reloading](https://github.com/shakacode/react_on_rails/blob/master/docs/rails-webpacker-react-integration-options.md#hmr-and-react-hot-reloading).
165
202
 
166
203
  ```bash
167
204
  # webpack dev server
@@ -174,9 +211,10 @@ in the `app/javascript/packs/*.js` files and automatically reload the browser to
174
211
  ./bin/webpack
175
212
  ```
176
213
 
177
- Once you start this development server, Webpacker will automatically start proxying all
178
- webpack asset requests to this server. When you stop the server, it'll revert back to
179
- on-demand compilation.
214
+ Once you start this webpack development server, Webpacker will automatically start proxying all
215
+ webpack asset requests to this server. When you stop this server, Rails will detect
216
+ that it's not running and Rails will revert back to on-demand compilation _if_ you have
217
+ the `compile` option set to true in your `config/webpacker.yml`
180
218
 
181
219
  You can use environment variables as options supported by
182
220
  [webpack-dev-server](https://webpack.js.org/configuration/dev-server/) in the
@@ -212,7 +250,7 @@ WEBPACKER_DEV_SERVER_HOST=0.0.0.0 ./bin/webpack-dev-server
212
250
  Webpacker gives you a default set of configuration files for test, development and
213
251
  production environments in `config/webpack/*.js`. You can configure each individual
214
252
  environment in their respective files or configure them all in the base
215
- `config/webpack/environment.js` file.
253
+ `config/webpack/base.js` file.
216
254
 
217
255
  By default, you don't need to make any changes to `config/webpack/*.js`
218
256
  files since it's all standard production-ready configuration. However,
@@ -256,23 +294,26 @@ const { webpackConfig } = require('@rails/webpacker')
256
294
 
257
295
  console.log(webpackConfig.output_path)
258
296
  console.log(webpackConfig.source_path)
297
+
298
+ // Or to print out your whole webpack configuration
299
+ console.log(JSON.stringify(webpackConfig, undefined, 2))
259
300
  ```
260
301
 
261
302
  ### Integrations
262
303
 
263
304
  Webpacker out of the box supports JS and static assets (fonts, images etc.)
264
- compilation. To enable support for Coffeescript or Typescript install
265
- relevant packages,
305
+ compilation. To enable support for CoffeeScript or TypeScript install
306
+ relevant packages:
266
307
 
267
- **Coffeescript**
308
+ #### CoffeeScript
268
309
 
269
- ```
310
+ ```bash
270
311
  yarn add coffeescript coffee-loader
271
312
  ```
272
313
 
273
- **Typescript**
314
+ #### TypeScript
274
315
 
275
- ```
316
+ ```bash
276
317
  yarn add typescript @babel/preset-typescript
277
318
  ```
278
319
 
@@ -289,7 +330,7 @@ Add tsconfig.json
289
330
  "moduleResolution": "node",
290
331
  "baseUrl": ".",
291
332
  "paths": {
292
- "*": ["node_modules/*", "app/javascript/*"]
333
+ "*": ["node_modules/*", "app/packs/*"]
293
334
  },
294
335
  "sourceMap": true,
295
336
  "target": "es5",
@@ -302,13 +343,13 @@ Add tsconfig.json
302
343
 
303
344
  #### CSS
304
345
 
305
- To enable CSS support in your application, add following packages,
346
+ To enable CSS support in your application, add following packages:
306
347
 
307
- ```
348
+ ```bash
308
349
  yarn add css-loader mini-css-extract-plugin css-minimizer-webpack-plugin
309
350
  ```
310
351
 
311
- optionally, add css extension to webpack config for easy resolution
352
+ optionally, add the css extension to webpack config for easy resolution.
312
353
 
313
354
  ```js
314
355
  // config/webpack/base.js
@@ -327,27 +368,33 @@ then add the relevant pre-processors:
327
368
 
328
369
  #### Postcss
329
370
 
330
- ```
371
+ ```bash
331
372
  yarn add postcss-loader
332
373
  ```
333
374
 
334
375
  #### Sass
335
376
 
336
- ```
337
- yarn add sass-loader
377
+ ```bash
378
+ yarn add sass sass-loader
338
379
  ```
339
380
 
340
381
  #### Less
341
382
 
383
+ ```bash
384
+ yarn add less less-loader
342
385
  ```
343
- yarn add less-loader
386
+
387
+ #### Stylus
388
+
389
+ ```bash
390
+ yarn add stylus stylus-loader
344
391
  ```
345
392
 
346
393
  #### React
347
394
 
348
395
  React is supported and you just need to add relevant packages,
349
396
 
350
- ```
397
+ ```bash
351
398
  yarn add react react-dom @babel/preset-react
352
399
  ```
353
400
 
@@ -372,16 +419,19 @@ if you are using typescript, update your `tsconfig.json`
372
419
  }
373
420
  ```
374
421
 
422
+ For more information on React props hydration and Server-Side Rendering (SSR), see the article
423
+ [Rails/Webpacker React Integration Options](https://github.com/shakacode/react_on_rails/blob/master/docs/rails-webpacker-react-integration-options.md)
424
+ in the [ShakaCode/react_on_rails](https://github.com/shakacode/react_on_rails) repo.
425
+
375
426
  #### Other frameworks
376
427
 
377
428
  Please follow webpack integration guide for relevant framework or library,
378
429
 
379
- 1. Svelte - https://github.com/sveltejs/svelte-loader#install
380
- 2. Angular - https://v2.angular.io/docs/ts/latest/guide/webpack.html#!#configure-webpack
381
- 3. Vue - https://vue-loader.vuejs.org/guide/
382
-
383
- For example to add Vue support,
430
+ 1. [Svelte](https://github.com/sveltejs/svelte-loader#install)
431
+ 2. [Angular](https://v2.angular.io/docs/ts/latest/guide/webpack.html#!#configure-webpack)
432
+ 3. [Vue](https://vue-loader.vuejs.org/guide/)
384
433
 
434
+ For example to add Vue support:
385
435
  ```js
386
436
  // config/webpack/rules/vue.js
387
437
  const VueLoaderPlugin = require('vue-loader/lib/plugin')
@@ -397,7 +447,9 @@ module.exports = {
397
447
  },
398
448
  plugins: [new VueLoaderPlugin()]
399
449
  }
450
+ ```
400
451
 
452
+ ```js
401
453
  // config/webpack/base.js
402
454
  const { webpackConfig, merge } = require('@rails/webpacker')
403
455
  const vueConfig = require('./rules/vue')
@@ -445,11 +497,11 @@ Please note, binstubs compiles in development mode however rake tasks
445
497
  compiles in production mode.
446
498
 
447
499
  ```bash
448
- # Compiles in development mode unless NODE_ENV is specified
500
+ # Compiles in development mode unless NODE_ENV is specified, per the binstub source
449
501
  ./bin/webpack
450
502
  ./bin/webpack-dev-server
451
503
 
452
- # compiles in production mode by default unless NODE_ENV is specified
504
+ # Compiles in production mode by default unless NODE_ENV is specified, per `lib/tasks/webpacker/compile.rake`
453
505
  bundle exec rails assets:precompile
454
506
  bundle exec rails webpacker:compile
455
507
  ```
@@ -459,8 +511,12 @@ bundle exec rails webpacker:compile
459
511
  You can run following commands to upgrade Webpacker to the latest stable version. This process involves upgrading the gem and related JavaScript packages:
460
512
 
461
513
  ```bash
514
+ # check your Gemfile for version restrictions
462
515
  bundle update webpacker
516
+
517
+ # overwrite your changes to the default install files and revert any unwanted changes from the install
463
518
  rails webpacker:install
519
+
464
520
  yarn upgrade @rails/webpacker --latest
465
521
  yarn upgrade webpack-dev-server --latest
466
522
 
@@ -468,6 +524,8 @@ yarn upgrade webpack-dev-server --latest
468
524
  yarn add @rails/webpacker@next
469
525
  ```
470
526
 
527
+ Also, consult the [CHANGELOG](./CHANGELOG.md) for additional upgrade links.
528
+
471
529
  ## Paths
472
530
 
473
531
  By default, Webpacker ships with simple conventions for where the JavaScript
@@ -475,19 +533,18 @@ app files and compiled webpack bundles will go in your Rails app.
475
533
  All these options are configurable from `config/webpacker.yml` file.
476
534
 
477
535
  The configuration for what webpack is supposed to compile by default rests
478
- on the convention that every file in `app/javascript/packs/*`**(default)**
536
+ on the convention that every file in `app/packs/entrypoints/*`**(default)**
479
537
  or whatever path you set for `source_entry_path` in the `webpacker.yml` configuration
480
538
  is turned into their own output files (or entry points, as webpack calls it). Therefore you don't want to put anything inside `packs` directory that you do not want to be
481
539
  an entry file. As a rule of thumb, put all files you want to link in your views inside
482
- "packs" directory and keep everything else under `app/javascript`.
540
+ "packs" directory and keep everything else under `app/packs`.
483
541
 
484
- Suppose you want to change the source directory from `app/javascript`
542
+ Suppose you want to change the source directory from `app/packs`
485
543
  to `frontend` and output to `assets/packs`. This is how you would do it:
486
544
 
487
545
  ```yml
488
546
  # config/webpacker.yml
489
- source_path: frontend
490
- source_entry_path: packs
547
+ source_path: frontend # packs are in frontend/packs
491
548
  public_output_path: assets/packs # outputs to => public/assets/packs
492
549
  ```
493
550
 
@@ -501,7 +558,9 @@ development:
501
558
  port: 3035
502
559
  ```
503
560
 
504
- If you have `hmr` turned to true, then the `stylesheet_pack_tag` generates no output, as you will want to configure your styles to be inlined in your JavaScript for hot reloading. During production and testing, the `stylesheet_pack_tag` will create the appropriate HTML tags.
561
+ If you have `hmr` turned to true, then the `stylesheet_pack_tag` generates no output,
562
+ as you will want to configure your styles to be inlined in your JavaScript for hot reloading.
563
+ During production and testing, the `stylesheet_pack_tag` will create the appropriate HTML tags.
505
564
 
506
565
  ### Additional paths
507
566
 
@@ -512,7 +571,7 @@ option available in `config/webpacker.yml`. This lets you
512
571
  add additional paths that webpack should lookup when resolving modules:
513
572
 
514
573
  ```yml
515
- additional_paths: ['app/assets/**/*', 'vendor/assets/**/*.css', 'Gemfile']
574
+ additional_paths: ['app/assets', 'vendor/assets']
516
575
  ```
517
576
 
518
577
  You can then import these items inside your modules like so:
@@ -533,6 +592,10 @@ Webpacker hooks up a new `webpacker:compile` task to `assets:precompile`, which
533
592
 
534
593
  When compiling assets for production on a remote server, such as a continuous integration environment, it's recommended to use `yarn install --frozen-lockfile` to install NPM packages on the remote host to ensure that the installed packages match the `yarn.lock` file.
535
594
 
595
+ ## Troubleshooting
596
+
597
+ See the doc page for [Troubleshooting](./docs/troubleshooting.md).
598
+
536
599
  ## Contributing
537
600
 
538
601
  [![Code Helpers](https://www.codetriage.com/rails/webpacker/badges/users.svg)](https://www.codetriage.com/rails/webpacker)