webpacker 5.1.1 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) 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 +70 -0
  7. data/.node-version +1 -1
  8. data/CHANGELOG.md +9 -3
  9. data/Gemfile.lock +76 -76
  10. data/README.md +11 -19
  11. data/docs/css.md +58 -3
  12. data/docs/integrations.md +1 -1
  13. data/docs/target.md +22 -0
  14. data/docs/testing.md +1 -1
  15. data/docs/troubleshooting.md +3 -1
  16. data/docs/typescript.md +44 -0
  17. data/docs/webpack-dev-server.md +1 -1
  18. data/lib/install/config/babel.config.js +1 -3
  19. data/lib/install/config/webpacker.yml +1 -1
  20. data/lib/tasks/webpacker/check_node.rake +1 -1
  21. data/lib/tasks/webpacker/check_yarn.rake +1 -1
  22. data/lib/webpacker/compiler.rb +7 -2
  23. data/lib/webpacker/configuration.rb +12 -4
  24. data/lib/webpacker/dev_server_runner.rb +2 -2
  25. data/lib/webpacker/helper.rb +25 -6
  26. data/lib/webpacker/railtie.rb +2 -2
  27. data/lib/webpacker/runner.rb +1 -0
  28. data/lib/webpacker/version.rb +1 -1
  29. data/lib/webpacker/webpack_runner.rb +2 -2
  30. data/package.json +29 -29
  31. data/package/__tests__/config.js +12 -1
  32. data/package/__tests__/development.js +14 -1
  33. data/package/config.js +4 -1
  34. data/package/configPath.js +3 -0
  35. data/package/env.js +1 -2
  36. data/package/environments/__tests__/base.js +26 -9
  37. data/package/environments/base.js +5 -6
  38. data/package/environments/development.js +39 -33
  39. data/package/environments/production.js +1 -3
  40. data/package/rules/babel.js +11 -4
  41. data/package/rules/file.js +1 -0
  42. data/package/rules/node_modules.js +1 -3
  43. data/package/rules/sass.js +1 -1
  44. data/package/utils/helpers.js +1 -1
  45. data/test/compiler_test.rb +8 -3
  46. data/test/configuration_test.rb +8 -7
  47. data/test/dev_server_runner_test.rb +1 -1
  48. data/test/helper_test.rb +3 -0
  49. data/test/test_app/config/webpacker.yml +7 -1
  50. data/test/test_app/public/packs/manifest.json +1 -0
  51. data/test/webpack_runner_test.rb +1 -1
  52. data/yarn.lock +2422 -2932
  53. metadata +10 -4
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Webpacker
2
2
 
3
3
  [![Build Status](https://travis-ci.org/rails/webpacker.svg?branch=master)](https://travis-ci.org/rails/webpacker)
4
- [![node.js](https://img.shields.io/badge/node-%3E%3D%2010.13.0-brightgreen.svg)](https://www.npmjs.com/package/@rails/webpacker)
4
+ [![node.js](https://img.shields.io/badge/node-%3E%3D%2010.17.0-brightgreen.svg)](https://www.npmjs.com/package/@rails/webpacker)
5
5
  [![Gem](https://img.shields.io/gem/v/webpacker.svg)](https://rubygems.org/gems/webpacker)
6
6
 
7
7
  Webpacker makes it easy to use the JavaScript pre-processor and bundler
@@ -35,6 +35,7 @@ in which case you may not even need the asset pipeline. This is mostly relevant
35
35
  - [Elm](./docs/integrations.md#elm)
36
36
  - [Stimulus](./docs/integrations.md#stimulus)
37
37
  - [Svelte](./docs/integrations.md#svelte)
38
+ - [Typescript](./docs/typescript.md)
38
39
  - [CoffeeScript](./docs/integrations.md#coffeescript)
39
40
  - [Erb](./docs/integrations.md#erb)
40
41
  - [Paths](#paths)
@@ -51,7 +52,7 @@ in which case you may not even need the asset pipeline. This is mostly relevant
51
52
 
52
53
  - Ruby 2.4+
53
54
  - Rails 5.2+
54
- - Node.js 10.13.0+
55
+ - Node.js 10.17.0+
55
56
  - Yarn 1.x+
56
57
 
57
58
  ## Features
@@ -121,8 +122,11 @@ app/javascript:
121
122
  ├── packs:
122
123
  │ # only webpack entry files here
123
124
  │ └── application.js
124
- └── src:
125
125
  │ └── application.css
126
+ └── src:
127
+ │ └── my_component.js
128
+ └── stylesheets:
129
+ │ └── my_styles.css
126
130
  └── images:
127
131
  └── logo.svg
128
132
  ```
@@ -318,7 +322,7 @@ Included install integrations:
318
322
  - [Svelte](./docs/integrations.md#Svelte)
319
323
  - [Stimulus](./docs/integrations.md#Stimulus)
320
324
  - [CoffeeScript](./docs/integrations.md#CoffeeScript)
321
- - [Typescript](./docs/integrations.md)
325
+ - [Typescript](./docs/typescript.md)
322
326
  - [Erb](./docs/integrations.md#Erb)
323
327
 
324
328
  See [Integrations](./docs/integrations.md) for further details.
@@ -362,12 +366,12 @@ If you have `hmr` turned to true, then the `stylesheet_pack_tag` generates no ou
362
366
 
363
367
  If you are adding Webpacker to an existing app that has most of the assets inside
364
368
  `app/assets` or inside an engine, and you want to share that
365
- with webpack modules, you can use the `resolved_paths`
369
+ with webpack modules, you can use the `additional_paths`
366
370
  option available in `config/webpacker.yml`. This lets you
367
371
  add additional paths that webpack should lookup when resolving modules:
368
372
 
369
373
  ```yml
370
- resolved_paths: ['app/assets']
374
+ additional_paths: ['app/assets']
371
375
  ```
372
376
 
373
377
  You can then import these items inside your modules like so:
@@ -382,18 +386,6 @@ import 'images/rails.png'
382
386
  will make the compilation slow, consider adding specific paths instead of
383
387
  whole parent directory if you just need to reference one or two modules
384
388
 
385
- ### Watched
386
-
387
- By default, the lazy compilation is cached until a file is changed under your
388
- tracked paths. You can configure which paths are tracked
389
- by adding new paths to `watched_paths` array. This is much like Rails' `autoload_paths`:
390
-
391
- ```rb
392
- # config/initializers/webpacker.rb
393
- # or config/application.rb
394
- Webpacker::Compiler.watched_paths << 'bower_components'
395
- ```
396
-
397
389
  ## Deployment
398
390
 
399
391
  Webpacker hooks up a new `webpacker:compile` task to `assets:precompile`, which gets run whenever you run `assets:precompile`. If you are not using Sprockets, `webpacker:compile` is automatically aliased to `assets:precompile`. Similar to sprockets both rake tasks will compile packs in production mode but will use `RAILS_ENV` to load configuration from `config/webpacker.yml` (if available).
@@ -407,7 +399,7 @@ When compiling assets for production on a remote server, such as a continuous in
407
399
  - [Webpack-dev-server](./docs/webpack-dev-server.md)
408
400
  - [Environment Variables](./docs/env.md)
409
401
  - [Folder Structure](./docs/folder-structure.md)
410
- - [Assets](./docs/assets.md) - [CSS, Sass and SCSS](./docs/css.md) - [ES6](./docs/es6.md)
402
+ - [Assets](./docs/assets.md) - [CSS, Sass and SCSS](./docs/css.md) - [ES6](./docs/es6.md), [Target browsers](./docs/target.md)
411
403
  - [Props](./docs/props.md)
412
404
  - [Typescript](./docs/typescript.md)
413
405
  - [Yarn](./docs/yarn.md)
@@ -6,7 +6,7 @@ Webpacker supports importing CSS, Sass and SCSS files directly into your JavaScr
6
6
  Importing and loading styles is a two step process:
7
7
 
8
8
  1. You need to tell webpack which file(s) it has to compile and know how to load
9
-
9
+
10
10
  When you do `import '../scss/application.scss'`, you're telling webpack to include `application.scss` in the build. This does not mean it's going to be compiled into your javascript, only that webpack now compiles and knows how to load this file. (How that file compilation is handled is depending on how your loaders (`css-loader`, `sass-loader`, `file-loader`, etc.) are configured.)
11
11
 
12
12
  2. You need to load those files in your views
@@ -18,6 +18,51 @@ Importing and loading styles is a two step process:
18
18
 
19
19
  ## Import global styles into your JS app
20
20
 
21
+ ### Importing CSS as a multi-file pack (Webpacker v5)
22
+
23
+ When you add a CSS/SCSS/SASS file to `app/javascript/packs/` directory, make sure to use the same pack name as its complementary JavaScript pack, e.g. `application.js` and `application.css`. By Webpacker convention (as of Webpacker v5), this will bundle `application.js` and `application.scss` as part of the same entry point (also described as [a multi-file entry point in the webpack docs](https://webpack.js.org/concepts/entry-points/#single-entry-shorthand-syntax)). With this approach, you can avoid importing CSS from JS, if desired.
24
+
25
+ ```
26
+ app/
27
+ javascript/
28
+ packs/
29
+ application.js
30
+ application.scss
31
+ ```
32
+
33
+ ### Importing CSS from CSS
34
+
35
+ You can import additional CSS/SCSS/SASS files from within a CSS file:
36
+
37
+ ```
38
+ app/
39
+ javascript/
40
+ stylesheets/
41
+ application.scss
42
+ posts.scss
43
+ comments.scss
44
+ ```
45
+
46
+ ```css
47
+ /* app/javascript/stylesheets/application.scss */
48
+
49
+ @import './posts';
50
+ @import './comments';
51
+ ```
52
+
53
+ ### Importing CSS provided by an NPM package from SCSS/CSS
54
+
55
+ Given your application installs an NPM package that provides CSS, such as `flatpickr`, you can import the CSS file(s) by path from the package directory within `node_modules/`:
56
+
57
+ ```js
58
+ /* app/javascript/stylesheets/application.scss */
59
+
60
+ @import "flatpickr/dist/flatpickr.css"
61
+ ```
62
+
63
+
64
+ ### Importing CSS from JS
65
+
21
66
  ```sass
22
67
  // app/javascript/hello_react/styles/hello-react.sass
23
68
 
@@ -42,6 +87,16 @@ const Hello = props => (
42
87
  )
43
88
  ```
44
89
 
90
+ ### Importing CSS provided by an NPM package from JS
91
+
92
+ Given your application installs an NPM package that provides CSS, such as `flatpickr`, you can import the CSS file(s) by path from the package directory within `node_modules/`. This is an alternative to importing from within a CSS file, as above:
93
+
94
+ ```js
95
+ // app/javascript/packs/application.js
96
+
97
+ import "flatpickr/dist/flatpickr.css"
98
+ ```
99
+
45
100
  ## Import scoped styles into your JS app
46
101
 
47
102
  Stylesheets that end with `.module.*` are treated as [CSS Modules](https://github.com/css-modules/css-modules).
@@ -147,14 +202,14 @@ You can use Yarn to add bootstrap or any other modules available on npm:
147
202
  yarn add bootstrap
148
203
  ```
149
204
 
150
- Import Bootstrap and theme (optional) CSS in your app/javascript/packs/app.js file:
205
+ Import Bootstrap and theme (optional) CSS in your app/javascript/packs/application.js file:
151
206
 
152
207
  ```js
153
208
  import 'bootstrap/dist/css/bootstrap'
154
209
  import 'bootstrap/dist/css/bootstrap-theme'
155
210
  ```
156
211
 
157
- Or in your app/javascript/app.sass file:
212
+ Or in your app/javascript/packs/application.sass file:
158
213
 
159
214
  ```sass
160
215
  // ~ to tell that this is not a relative import
@@ -91,7 +91,7 @@ You can read more about this in the [Vue docs](https://vuejs.org/v2/guide/instal
91
91
 
92
92
  ### Lazy loading integration
93
93
 
94
- See [docs/es6](docs/es6.md) to know more about Webpack and Webpacker configuration.
94
+ See [docs/es6](es6.md) to know more about Webpack and Webpacker configuration.
95
95
 
96
96
  For instance, you can lazy load Vue JS components:
97
97
 
@@ -0,0 +1,22 @@
1
+ # Target browsers
2
+
3
+ By default webpacker provides these front-end tools:
4
+ - [@babel/preset-env](https://github.com/babel/babel/tree/master/packages/babel-preset-env)
5
+ - [Autoprefixer](https://github.com/postcss/autoprefixer)
6
+ - [postcss-preset-env](https://github.com/csstools/postcss-preset-env)
7
+
8
+ All these tools use [Browserslist](https://github.com/browserslist/browserslist) to detect which environment your users have
9
+
10
+ Webpacker browserslist default target:
11
+ ```
12
+ defaults
13
+ ```
14
+
15
+ `defaults`: `(> 0.5%, last 2 versions, Firefox ESR, not dead)`, [browserl.ist](https://browserl.ist/) is an online tool to check what browsers will be selected by some query.
16
+
17
+ To keep browsers data up to date, you need to run:
18
+ ```bash
19
+ yarn upgrade caniuse-lite
20
+ ```
21
+
22
+ at least once every few months, to prevent such [problems](https://github.com/browserslist/browserslist/issues/492)
@@ -32,7 +32,7 @@ It is beneficial to use the same webpack configuration file (generated by webpac
32
32
  ```js
33
33
  // config/webpack/test.js
34
34
  const environment = require('./environment')
35
- environment.plugins.get('Manifest').opts.writeToFileEmit = process.env.NODE_ENV !== 'test'
35
+ environment.plugins.get('Manifest').options.writeToFileEmit = process.env.NODE_ENV !== 'test'
36
36
  environment.loaders.append('istanbul-instrumenter', {
37
37
  test: /\.ts$/,
38
38
  enforce: "post",
@@ -4,11 +4,13 @@
4
4
 
5
5
  1. Read the error message carefully. The error message will tell you the precise key value
6
6
  that is not matching what Webpack expects.
7
- 2. Put a `debugger` statement in your Webpack configuration and run `bin/webpack --debug`.
7
+ 2. Put a `debugger` statement in your Webpack configuration and run `bin/webpack --debug-webpacker`.
8
8
  If you have a node debugger installed, you'll see the Chrome debugger for your webpack
9
9
  config. For example, install the Chrome extension [NiM](https://chrome.google.com/webstore/detail/nodejs-v8-inspector-manag/gnhhdgbaldcilmgcpfddgdbkhjohddkj) and
10
10
  set the option for the dev tools to open automatically. For more details on debugging,
11
11
  see the official [Webpack docs on debugging](https://webpack.js.org/contribute/debugging/#devtools)
12
+ 3. Any arguments that you add to bin/webpack get sent to webpack. For example, you can pass `--debug` to switch loaders to debug mode. See [webpack CLI debug options](https://webpack.js.org/api/cli/#debug-options) for more information on the available options.
13
+ 4. You can also pass additional options to the command to run the webpack-dev-server and start the webpack-dev-server with the option `--debug-webpacker`
12
14
 
13
15
  ## ENOENT: no such file or directory - node-sass
14
16
 
@@ -10,6 +10,50 @@ bundle exec rails webpacker:install:typescript
10
10
 
11
11
  After that, a new file called `hello_typescript.ts` will be present in your `packs` directory (or rather the `source_entry_path` of your `webpacker.yml` configuration). You're now ready to write TypeScript.
12
12
 
13
+ ## (Optional) Adding Compile-Time Type Checking
14
+
15
+ The default installation only transpiles your TypeScript code using Babel. If you would like to enable type checking as part of the Webpack compilation process (i.e. fail the build if there are TS errors), you can do the following:
16
+
17
+ 1. Install the Fork TS Checker Webpack Plugin
18
+
19
+ ```sh
20
+ yarn add --dev fork-ts-checker-webpack-plugin
21
+ ```
22
+
23
+ 2. Then add it to your development environment config in `config/webpack/development.js`
24
+
25
+ ```js
26
+ const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin");
27
+ const path = require("path");
28
+
29
+ environment.plugins.append(
30
+ "ForkTsCheckerWebpackPlugin",
31
+ new ForkTsCheckerWebpackPlugin({
32
+ typescript: {
33
+ configFile: path.resolve(__dirname, "../../tsconfig.json"),
34
+ },
35
+ async: false,
36
+ })
37
+ );
38
+ ```
39
+
40
+ If you are `fork-ts-checker-webpack-plugin` older than 5.0, the `tsconfig` option also needs to be specified:
41
+
42
+ ```js
43
+ const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin");
44
+ const path = require("path");
45
+
46
+ environment.plugins.append(
47
+ "ForkTsCheckerWebpackPlugin",
48
+ new ForkTsCheckerWebpackPlugin({
49
+ // this is a relative path to your project's TypeScript config
50
+ tsconfig: path.resolve(__dirname, "../../tsconfig.json"),
51
+ // non-async so type checking will block compilation
52
+ async: false,
53
+ })
54
+ );
55
+ ```
56
+
13
57
  ## Upgrading to 5.1
14
58
 
15
59
  If you update your App to `webpacker >= 5.1` and had TypeScript installed before, you need to add some new/remove some old configurations:
@@ -19,7 +19,7 @@ Now if you refresh your Rails view everything should work as expected.
19
19
  Webpacker out-of-the-box supports HMR with `webpack-dev-server` and
20
20
  you can toggle it by setting `dev_server/hmr` option inside `webpacker.yml`.
21
21
 
22
- Checkout this guide for more information:
22
+ Check out this guide for more information:
23
23
 
24
24
  - https://webpack.js.org/configuration/dev-server/#devserver-hot
25
25
 
@@ -56,9 +56,7 @@ module.exports = function(api) {
56
56
  [
57
57
  '@babel/plugin-transform-runtime',
58
58
  {
59
- helpers: false,
60
- regenerator: true,
61
- corejs: false
59
+ helpers: false
62
60
  }
63
61
  ],
64
62
  [
@@ -10,7 +10,7 @@ default: &default
10
10
 
11
11
  # Additional paths webpack should lookup modules
12
12
  # ['app/assets', 'engine/foo/app/assets']
13
- resolved_paths: []
13
+ additional_paths: []
14
14
 
15
15
  # Reload manifest.json on all requests so we reload latest compiled packs
16
16
  cache_manifest: false
@@ -3,7 +3,7 @@ namespace :webpacker do
3
3
  desc "Verifies if Node.js is installed"
4
4
  task :check_node do
5
5
  begin
6
- node_version = `node -v || nodejs -v`
6
+ node_version = `node -v || nodejs -v`.strip
7
7
  raise Errno::ENOENT if node_version.blank?
8
8
 
9
9
  pkg_path = Pathname.new("#{__dir__}/../../../package.json").realpath
@@ -3,7 +3,7 @@ namespace :webpacker do
3
3
  desc "Verifies if Yarn is installed"
4
4
  task :check_yarn do
5
5
  begin
6
- yarn_version = `yarn --version`
6
+ yarn_version = `yarn --version`.strip
7
7
  raise Errno::ENOENT if yarn_version.blank?
8
8
 
9
9
  pkg_path = Pathname.new("#{__dir__}/../../../package.json").realpath
@@ -4,6 +4,8 @@ require "digest/sha1"
4
4
  class Webpacker::Compiler
5
5
  # Additional paths that test compiler needs to watch
6
6
  # Webpacker::Compiler.watched_paths << 'bower_components'
7
+ #
8
+ # Deprecated. Use additional_paths in the YAML configuration instead.
7
9
  cattr_accessor(:watched_paths) { [] }
8
10
 
9
11
  # Additional environment variables that the compiler is being run with
@@ -50,6 +52,8 @@ class Webpacker::Compiler
50
52
  end
51
53
 
52
54
  def watched_files_digest
55
+ warn "Webpacker::Compiler.watched_paths has been deprecated. Set additional_paths in webpacker.yml instead." unless watched_paths.empty?
56
+
53
57
  files = Dir[*default_watched_paths, *watched_paths].reject { |f| File.directory?(f) }
54
58
  file_ids = files.sort.map { |f| "#{File.basename(f)}/#{Digest::SHA1.file(f).hexdigest}" }
55
59
  Digest::SHA1.hexdigest(file_ids.join("/"))
@@ -86,7 +90,7 @@ class Webpacker::Compiler
86
90
 
87
91
  def default_watched_paths
88
92
  [
89
- *config.resolved_paths_globbed,
93
+ *config.additional_paths_globbed,
90
94
  config.source_path_globbed,
91
95
  "yarn.lock", "package.json",
92
96
  "config/webpack/**/*"
@@ -101,6 +105,7 @@ class Webpacker::Compiler
101
105
  return env unless defined?(ActionController::Base)
102
106
 
103
107
  env.merge("WEBPACKER_ASSET_HOST" => ENV.fetch("WEBPACKER_ASSET_HOST", ActionController::Base.helpers.compute_asset_host),
104
- "WEBPACKER_RELATIVE_URL_ROOT" => ENV.fetch("WEBPACKER_RELATIVE_URL_ROOT", ActionController::Base.relative_url_root))
108
+ "WEBPACKER_RELATIVE_URL_ROOT" => ENV.fetch("WEBPACKER_RELATIVE_URL_ROOT", ActionController::Base.relative_url_root),
109
+ "WEBPACKER_CONFIG" => webpacker.config_path.to_s)
105
110
  end
106
111
  end
@@ -27,12 +27,12 @@ class Webpacker::Configuration
27
27
  globbed_path_with_extensions(source_path.relative_path_from(root_path))
28
28
  end
29
29
 
30
- def resolved_paths
31
- fetch(:resolved_paths)
30
+ def additional_paths
31
+ fetch(:additional_paths) + resolved_paths
32
32
  end
33
33
 
34
- def resolved_paths_globbed
35
- resolved_paths.map { |p| globbed_path_with_extensions(p) }
34
+ def additional_paths_globbed
35
+ additional_paths.map { |p| globbed_path_with_extensions(p) }
36
36
  end
37
37
 
38
38
  def source_entry_path
@@ -76,6 +76,14 @@ class Webpacker::Configuration
76
76
  end
77
77
 
78
78
  private
79
+ def resolved_paths
80
+ paths = data.fetch(:resolved_paths, [])
81
+
82
+ warn "The resolved_paths option has been deprecated. Use additional_paths instead." unless paths.empty?
83
+
84
+ paths
85
+ end
86
+
79
87
  def fetch(key)
80
88
  data.fetch(key, defaults[key])
81
89
  end
@@ -45,6 +45,7 @@ module Webpacker
45
45
 
46
46
  def execute_cmd
47
47
  env = Webpacker::Compiler.env
48
+ env["WEBPACKER_CONFIG"] = @webpacker_config
48
49
 
49
50
  cmd = if node_modules_bin_exist?
50
51
  ["#{@node_modules_bin_path}/webpack-dev-server"]
@@ -52,9 +53,8 @@ module Webpacker
52
53
  ["yarn", "webpack-dev-server"]
53
54
  end
54
55
 
55
- if ARGV.include?("--debug")
56
+ if @argv.include?("--debug-webpacker")
56
57
  cmd = [ "node", "--inspect-brk"] + cmd
57
- ARGV.delete("--debug")
58
58
  end
59
59
 
60
60
  cmd += ["--config", @webpack_config]
@@ -46,7 +46,16 @@ module Webpacker::Helper
46
46
  #
47
47
  # <%= image_pack_tag 'application.png', size: '16x10', alt: 'Edit Entry' %>
48
48
  # <img alt='Edit Entry' src='/packs/application-k344a6d59eef8632c9d1.png' width='16' height='10' />
49
+ #
50
+ # <%= image_pack_tag 'picture.png', srcset: { 'picture-2x.png' => '2x' } %>
51
+ # <img srcset= "/packs/picture-2x-7cca48e6cae66ec07b8e.png 2x" src="/packs/picture-c38deda30895059837cf.png" >
49
52
  def image_pack_tag(name, **options)
53
+ if options[:srcset] && !options[:srcset].is_a?(String)
54
+ options[:srcset] = options[:srcset].map do |src_name, size|
55
+ "#{resolve_path_to_image(src_name)} #{size}"
56
+ end.join(", ")
57
+ end
58
+
50
59
  image_tag(resolve_path_to_image(name), options)
51
60
  end
52
61
 
@@ -77,6 +86,7 @@ module Webpacker::Helper
77
86
  # By default, this list is auto-generated to match everything in
78
87
  # app/javascript/packs/*.js and all the dependent chunks. In production mode, the digested reference is automatically looked up.
79
88
  # See: https://webpack.js.org/plugins/split-chunks-plugin/
89
+ #
80
90
  # Example:
81
91
  #
82
92
  # <%= javascript_packs_with_chunks_tag 'calendar', 'map', 'data-turbolinks-track': 'reload' %> # =>
@@ -85,11 +95,15 @@ module Webpacker::Helper
85
95
  # <script src="/packs/calendar-1016838bab065ae1e314.chunk.js" data-turbolinks-track="reload"></script>
86
96
  # <script src="/packs/map~runtime-16838bab065ae1e314.chunk.js" data-turbolinks-track="reload"></script>
87
97
  # <script src="/packs/map-16838bab065ae1e314.chunk.js" data-turbolinks-track="reload"></script>
98
+ #
88
99
  # DO:
89
- # <%= javascript_packs_with_chunks_tag 'calendar', 'map' %>
100
+ #
101
+ # <%= javascript_packs_with_chunks_tag 'calendar', 'map' %>
102
+ #
90
103
  # DON'T:
91
- # <%= javascript_packs_with_chunks_tag 'calendar' %>
92
- # <%= javascript_packs_with_chunks_tag 'map' %>
104
+ #
105
+ # <%= javascript_packs_with_chunks_tag 'calendar' %>
106
+ # <%= javascript_packs_with_chunks_tag 'map' %>
93
107
  def javascript_packs_with_chunks_tag(*names, **options)
94
108
  javascript_include_tag(*sources_from_manifest_entrypoints(names, type: :javascript), **options)
95
109
  end
@@ -97,6 +111,7 @@ module Webpacker::Helper
97
111
  # Creates a link tag, for preloading, that references a given Webpacker asset.
98
112
  # In production mode, the digested reference is automatically looked up.
99
113
  # See: https://developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content
114
+ #
100
115
  # Example:
101
116
  #
102
117
  # <%= preload_pack_asset 'fonts/fa-regular-400.woff2' %> # =>
@@ -143,11 +158,15 @@ module Webpacker::Helper
143
158
  # <link rel="stylesheet" media="screen" href="/packs/3-8c7ce31a.chunk.css" />
144
159
  # <link rel="stylesheet" media="screen" href="/packs/calendar-8c7ce31a.chunk.css" />
145
160
  # <link rel="stylesheet" media="screen" href="/packs/map-8c7ce31a.chunk.css" />
161
+ #
146
162
  # DO:
147
- # <%= stylesheet_packs_with_chunks_tag 'calendar', 'map' %>
163
+ #
164
+ # <%= stylesheet_packs_with_chunks_tag 'calendar', 'map' %>
165
+ #
148
166
  # DON'T:
149
- # <%= stylesheet_packs_with_chunks_tag 'calendar' %>
150
- # <%= stylesheet_packs_with_chunks_tag 'map' %>
167
+ #
168
+ # <%= stylesheet_packs_with_chunks_tag 'calendar' %>
169
+ # <%= stylesheet_packs_with_chunks_tag 'map' %>
151
170
  def stylesheet_packs_with_chunks_tag(*names, **options)
152
171
  if current_webpacker_instance.config.extract_css?
153
172
  stylesheet_link_tag(*sources_from_manifest_entrypoints(names, type: :stylesheet), **options)