webpacker 4.2.0 → 4.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4bcfdcad6251b8aaa5e5687a3f16b498faf3ca8aae0615fddf75113194031eed
4
- data.tar.gz: 97acb9d68194424e88e9818e91c07e6b9289f42540ca11f35be4f51899b320c0
3
+ metadata.gz: d57c77fb839f38501e9c45ed502a196d618ce449d325c733f90ae95da4d53614
4
+ data.tar.gz: e978c0e6a5f9e00c065d01114f610095d8ff8677e4de210919b9b537b9a9ef24
5
5
  SHA512:
6
- metadata.gz: 3a35dae1dd158f276296a7b23c8f2ea5243e30ed779fd8295e52b7a00a184dfad71b1e811101e183a8798a32c329ddc89881f6206b00ffcd2ce33941be060568
7
- data.tar.gz: 7fbc1d41d61b2b11aab7dd47859d2b407fc7617f0e2eee177ea2178c21dfdb25884017bb61b144aa55112241644bdbb4e2ca1c81b98ee41ff9b1ab7d93bdddbf
6
+ metadata.gz: 17bc7a08a4d9acb876d720d03fcdfd43a64aab320c54924d2067107e5bab372f2abaddc6cb9704f334ef5aebc0c2259afbe3335a84ea62d07d98e4fd456609bc
7
+ data.tar.gz: 3bf0e8243fd43852c02bde42fe8ab20cdeaf1cb9e7f7a2a51d0cfe9b2aa0e1fad8ab03c596764f0c5de7109558676e0f8a3be94f8de880c27a2d18de9d9df6bf
@@ -2,6 +2,10 @@
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
+ ## [[4.2.1]](https://github.com/rails/webpacker/compare/v4.1.0...v4.2.0) - 2019-12-09
6
+
7
+ - Fixed issue with webpack clean task [#2389](https://github.com/rails/webpacker/pull/2389)
8
+
5
9
  ## [[4.2.0]](https://github.com/rails/webpacker/compare/v4.1.0...v4.2.0) - 2019-11-12
6
10
 
7
11
  - Fixed installer bug [#2366](https://github.com/rails/webpacker/pull/2366)
@@ -49,14 +53,14 @@ Please see the diff
49
53
  In each of your `/packs/*.js` files, change this:
50
54
 
51
55
  ```js
52
- import "@babel/polyfill";
56
+ import '@babel/polyfill'
53
57
  ```
54
58
 
55
59
  to this:
56
60
 
57
61
  ```js
58
- import "core-js/stable";
59
- import "regenerator-runtime/runtime";
62
+ import 'core-js/stable'
63
+ import 'regenerator-runtime/runtime'
60
64
  ```
61
65
 
62
66
  Don't forget to install those dependencies directly!
@@ -93,10 +97,10 @@ Source maps can be disabled in any environment configuration, e.g:
93
97
  ```js
94
98
  // config/webpack/production.js
95
99
 
96
- const environment = require("./environment");
97
- environment.config.merge({ devtool: "none" });
100
+ const environment = require('./environment')
101
+ environment.config.merge({ devtool: 'none' })
98
102
 
99
- module.exports = environment.toWebpackConfig();
103
+ module.exports = environment.toWebpackConfig()
100
104
  ```
101
105
 
102
106
  - Reintroduced `context` to the file loader. Reverting the simpler paths change
@@ -147,12 +151,12 @@ To get old behaviour:
147
151
  ```js
148
152
  // config/webpack/environment.js
149
153
 
150
- const { environment, config } = require("@rails/webpacker");
151
- const { join } = require("path");
154
+ const { environment, config } = require('@rails/webpacker')
155
+ const { join } = require('path')
152
156
 
153
- const fileLoader = environment.loaders.get("file");
154
- fileLoader.use[0].options.name = "[path][name]-[hash].[ext]";
155
- fileLoader.use[0].options.context = join(config.source_path); // optional if you don't want to expose full paths
157
+ const fileLoader = environment.loaders.get('file')
158
+ fileLoader.use[0].options.name = '[path][name]-[hash].[ext]'
159
+ fileLoader.use[0].options.context = join(config.source_path) // optional if you don't want to expose full paths
156
160
  ```
157
161
 
158
162
  ### Added
@@ -246,7 +250,7 @@ helper otherwise you will get duplicated chunks on the page.
246
250
  depending on how you want to process packs [#1823](https://github.com/rails/webpacker/pull/1823)
247
251
 
248
252
  ```js
249
- environment.loaders.prepend();
253
+ environment.loaders.prepend()
250
254
  ```
251
255
 
252
256
  - Separate CSS extraction from build environment [#1625](https://github.com/rails/webpacker/pull/1625)
@@ -281,13 +285,13 @@ static_assets_extensions:
281
285
  - Add split chunks api (undocumented)
282
286
 
283
287
  ```js
284
- const { environment } = require("@rails/webpacker");
288
+ const { environment } = require('@rails/webpacker')
285
289
  // Enable with default config
286
- environment.splitChunks();
290
+ environment.splitChunks()
287
291
  // Configure via a callback
288
292
  environment.splitChunks(config =>
289
293
  Object.assign({}, config, { optimization: { splitChunks: false } })
290
- );
294
+ )
291
295
  ```
292
296
 
293
297
  - Allow changing static file extensions using webpacker.yml (undocumented)
@@ -418,12 +422,12 @@ bundle exec rails webpacker:binstubs
418
422
 
419
423
  ```js
420
424
  // config/webpack/environment.js
421
- const { environment } = require("@rails/webpacker");
425
+ const { environment } = require('@rails/webpacker')
422
426
 
423
- environment.loaders.append("json", {
427
+ environment.loaders.append('json', {
424
428
  test: /\.json$/,
425
- use: "json-loader"
426
- });
429
+ use: 'json-loader'
430
+ })
427
431
  ```
428
432
 
429
433
  ### Fixed
@@ -490,17 +494,17 @@ into your `config/webpack/loaders/`
490
494
  directory and add it to webpack build from `config/webpack/environment.js`
491
495
 
492
496
  ```js
493
- const erb = require("./loaders/erb");
494
- const elm = require("./loaders/elm");
495
- const typescript = require("./loaders/typescript");
496
- const vue = require("./loaders/vue");
497
- const coffee = require("./loaders/coffee");
497
+ const erb = require('./loaders/erb')
498
+ const elm = require('./loaders/elm')
499
+ const typescript = require('./loaders/typescript')
500
+ const vue = require('./loaders/vue')
501
+ const coffee = require('./loaders/coffee')
498
502
 
499
- environment.loaders.append("coffee", coffee);
500
- environment.loaders.append("vue", vue);
501
- environment.loaders.append("typescript", typescript);
502
- environment.loaders.append("elm", elm);
503
- environment.loaders.append("erb", erb);
503
+ environment.loaders.append('coffee', coffee)
504
+ environment.loaders.append('vue', vue)
505
+ environment.loaders.append('typescript', typescript)
506
+ environment.loaders.append('elm', elm)
507
+ environment.loaders.append('erb', erb)
504
508
  ```
505
509
 
506
510
  In `.postcssrc.yml` you need to change the plugin name from `postcss-smart-import` to `postcss-import`:
@@ -553,15 +557,15 @@ bundle exec rails webpacker:install:coffee
553
557
  - Expose base config from environment
554
558
 
555
559
  ```js
556
- environment.config.set("resolve.extensions", [".foo", ".bar"]);
557
- environment.config.set("output.filename", "[name].js");
558
- environment.config.delete("output.chunkFilename");
559
- environment.config.get("resolve");
560
+ environment.config.set('resolve.extensions', ['.foo', '.bar'])
561
+ environment.config.set('output.filename', '[name].js')
562
+ environment.config.delete('output.chunkFilename')
563
+ environment.config.get('resolve')
560
564
  environment.config.merge({
561
565
  output: {
562
- filename: "[name].js"
566
+ filename: '[name].js'
563
567
  }
564
- });
568
+ })
565
569
  ```
566
570
 
567
571
  - Expose new API's for loaders and plugins to insert at position
@@ -570,34 +574,34 @@ environment.config.merge({
570
574
  const jsonLoader = {
571
575
  test: /\.json$/,
572
576
  exclude: /node_modules/,
573
- loader: "json-loader"
574
- };
577
+ loader: 'json-loader'
578
+ }
575
579
 
576
- environment.loaders.append("json", jsonLoader);
577
- environment.loaders.prepend("json", jsonLoader);
578
- environment.loaders.insert("json", jsonLoader, { after: "style" });
579
- environment.loaders.insert("json", jsonLoader, { before: "babel" });
580
+ environment.loaders.append('json', jsonLoader)
581
+ environment.loaders.prepend('json', jsonLoader)
582
+ environment.loaders.insert('json', jsonLoader, { after: 'style' })
583
+ environment.loaders.insert('json', jsonLoader, { before: 'babel' })
580
584
 
581
585
  // Update a plugin
582
- const manifestPlugin = environment.plugins.get("Manifest");
583
- manifestPlugin.opts.writeToFileEmit = false;
586
+ const manifestPlugin = environment.plugins.get('Manifest')
587
+ manifestPlugin.opts.writeToFileEmit = false
584
588
 
585
589
  // Update coffee loader to use coffeescript 2
586
- const babelLoader = environment.loaders.get("babel");
590
+ const babelLoader = environment.loaders.get('babel')
587
591
  environment.loaders.insert(
588
- "coffee",
592
+ 'coffee',
589
593
  {
590
594
  test: /\.coffee(\.erb)?$/,
591
- use: babelLoader.use.concat(["coffee-loader"])
595
+ use: babelLoader.use.concat(['coffee-loader'])
592
596
  },
593
- { before: "json" }
594
- );
597
+ { before: 'json' }
598
+ )
595
599
  ```
596
600
 
597
601
  - Expose `resolve.modules` paths like loaders and plugins
598
602
 
599
603
  ```js
600
- environment.resolvedModules.append("vendor", "vendor");
604
+ environment.resolvedModules.append('vendor', 'vendor')
601
605
  ```
602
606
 
603
607
  - Enable sourcemaps in `style` and `css` loader
@@ -608,13 +612,13 @@ environment.resolvedModules.append("vendor", "vendor");
608
612
 
609
613
  ```js
610
614
  // Enable css modules with sass loader
611
- const sassLoader = environment.loaders.get("sass");
612
- const cssLoader = sassLoader.use.find(loader => loader.loader === "css-loader");
615
+ const sassLoader = environment.loaders.get('sass')
616
+ const cssLoader = sassLoader.use.find(loader => loader.loader === 'css-loader')
613
617
 
614
618
  cssLoader.options = Object.assign({}, cssLoader.options, {
615
619
  modules: true,
616
- localIdentName: "[path][name]__[local]--[hash:base64:5]"
617
- });
620
+ localIdentName: '[path][name]__[local]--[hash:base64:5]'
621
+ })
618
622
  ```
619
623
 
620
624
  - Expose rest of configurable dev server options from webpacker.yml
@@ -622,7 +626,7 @@ cssLoader.options = Object.assign({}, cssLoader.options, {
622
626
  ```yml
623
627
  quiet: false
624
628
  headers:
625
- "Access-Control-Allow-Origin": "*"
629
+ 'Access-Control-Allow-Origin': '*'
626
630
  watch_options:
627
631
  ignored: /node_modules/
628
632
  ```
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- webpacker (4.2.0)
4
+ webpacker (4.2.1)
5
5
  activesupport (>= 4.2)
6
6
  rack-proxy (>= 0.6.1)
7
7
  railties (>= 4.2)
@@ -36,7 +36,7 @@ end
36
36
 
37
37
  if Webpacker::VERSION =~ /^[0-9]+\.[0-9]+\.[0-9]+$/
38
38
  say "Installing all JavaScript dependencies [#{Webpacker::VERSION}]"
39
- run "yarn add @rails/webpacker"
39
+ run "yarn add @rails/webpacker@#{Webpacker::VERSION}"
40
40
  else
41
41
  say "Installing all JavaScript dependencies [from prerelease rails/webpacker]"
42
42
  run "yarn add @rails/webpacker@next"
@@ -1,9 +1,13 @@
1
+ $stdout.sync = true
2
+
1
3
  require "webpacker/configuration"
2
4
 
3
5
  namespace :webpacker do
4
6
  desc "Remove old compiled webpacks"
5
7
  task :clean, [:keep] => ["webpacker:verify_install", :environment] do |_, args|
6
- Webpacker.clean(Integer(args.keep || 2))
8
+ Webpacker.ensure_log_goes_to_stdout do
9
+ Webpacker.clean(Integer(args.keep || 2))
10
+ end
7
11
  end
8
12
  end
9
13
 
@@ -1,13 +1,5 @@
1
1
  $stdout.sync = true
2
2
 
3
- def ensure_log_goes_to_stdout
4
- old_logger = Webpacker.logger
5
- Webpacker.logger = ActiveSupport::Logger.new(STDOUT)
6
- yield
7
- ensure
8
- Webpacker.logger = old_logger
9
- end
10
-
11
3
  def yarn_install_available?
12
4
  rails_major = Rails::VERSION::MAJOR
13
5
  rails_minor = Rails::VERSION::MINOR
@@ -27,7 +19,7 @@ namespace :webpacker do
27
19
  desc "Compile JavaScript packs using webpack for production with digests"
28
20
  task compile: ["webpacker:verify_install", :environment] do
29
21
  Webpacker.with_node_env(ENV.fetch("NODE_ENV", "production")) do
30
- ensure_log_goes_to_stdout do
22
+ Webpacker.ensure_log_goes_to_stdout do
31
23
  if Webpacker.compile
32
24
  # Successful compilation!
33
25
  else
@@ -22,6 +22,14 @@ module Webpacker
22
22
  ENV["NODE_ENV"] = original
23
23
  end
24
24
 
25
+ def ensure_log_goes_to_stdout
26
+ old_logger = Webpacker.logger
27
+ Webpacker.logger = ActiveSupport::Logger.new(STDOUT)
28
+ yield
29
+ ensure
30
+ Webpacker.logger = old_logger
31
+ end
32
+
25
33
  delegate :logger, :logger=, :env, to: :instance
26
34
  delegate :config, :compiler, :manifest, :commands, :dev_server, to: :instance
27
35
  delegate :bootstrap, :clean, :clobber, :compile, to: :commands
@@ -1,25 +1,19 @@
1
1
  class Webpacker::Commands
2
- delegate :config, :compiler, :manifest, to: :@webpacker
2
+ delegate :config, :compiler, :manifest, :logger, to: :@webpacker
3
3
 
4
4
  def initialize(webpacker)
5
5
  @webpacker = webpacker
6
6
  end
7
7
 
8
- def clean(count_to_keep = 2)
9
- if config.public_output_path.exist? && config.public_manifest_path.exist?
10
- files_in_manifest = process_manifest_hash(manifest.refresh)
11
- files_to_be_removed = files_in_manifest.flat_map do |file_in_manifest|
12
- file_prefix, file_ext = file_in_manifest.scan(/(.*)[0-9a-f]{20}(.*)/).first
13
- versions_of_file = Dir.glob("#{file_prefix}*#{file_ext}").grep(/#{file_prefix}[0-9a-f]{20}#{file_ext}/)
14
- versions_of_file.map do |version_of_file|
15
- next if version_of_file == file_in_manifest
16
-
17
- [version_of_file, File.mtime(version_of_file).utc.to_i]
18
- end.compact.sort_by(&:last).reverse.drop(count_to_keep).map(&:first)
8
+ def clean(count = 2)
9
+ if config.public_output_path.exist? && config.public_manifest_path.exist? && versions.count > count
10
+ versions.drop(count).flat_map(&:last).each do |file|
11
+ File.delete(file) if File.exist?(file)
12
+ logger.info "Removed #{file}"
19
13
  end
20
-
21
- files_to_be_removed.each { |f| File.delete f }
22
14
  end
15
+
16
+ true
23
17
  end
24
18
 
25
19
  def clobber
@@ -38,11 +32,19 @@ class Webpacker::Commands
38
32
  end
39
33
 
40
34
  private
41
- def process_manifest_hash(manifest_hash)
42
- manifest_hash.values.map do |value|
43
- next process_manifest_hash(value) if value.is_a?(Hash)
35
+ def versions
36
+ all_files = Dir.glob("#{config.public_output_path}/**/*")
37
+ manifest_config = Dir.glob("#{config.public_manifest_path}*")
38
+
39
+ packs = all_files - manifest_config - current_version
40
+ packs.group_by { |file| File.mtime(file).utc.to_i }.sort.reverse
41
+ end
42
+
43
+ def current_version
44
+ manifest.refresh.values.map do |value|
45
+ next if value.is_a?(Hash)
44
46
 
45
47
  File.join(config.root_path, "public", value)
46
- end.flatten
48
+ end.compact
47
49
  end
48
50
  end
@@ -1,4 +1,4 @@
1
1
  module Webpacker
2
2
  # Change the version in package.json too, please!
3
- VERSION = "4.2.0".freeze
3
+ VERSION = "4.2.1".freeze
4
4
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rails/webpacker",
3
- "version": "4.2.0",
3
+ "version": "4.2.1",
4
4
  "description": "Use webpack to manage app-like JavaScript modules in Rails",
5
5
  "main": "package/index.js",
6
6
  "files": [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webpacker
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.0
4
+ version: 4.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-11-12 00:00:00.000000000 Z
12
+ date: 2019-12-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -287,8 +287,8 @@ homepage: https://github.com/rails/webpacker
287
287
  licenses:
288
288
  - MIT
289
289
  metadata:
290
- source_code_uri: https://github.com/rails/webpacker/tree/v4.2.0
291
- changelog_uri: https://github.com/rails/webpacker/blob/v4.2.0/CHANGELOG.md
290
+ source_code_uri: https://github.com/rails/webpacker/tree/v4.2.1
291
+ changelog_uri: https://github.com/rails/webpacker/blob/v4.2.1/CHANGELOG.md
292
292
  post_install_message:
293
293
  rdoc_options: []
294
294
  require_paths: