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 +4 -4
- data/CHANGELOG.md +58 -54
- data/Gemfile.lock +1 -1
- data/lib/install/template.rb +1 -1
- data/lib/tasks/webpacker/clean.rake +5 -1
- data/lib/tasks/webpacker/compile.rake +1 -9
- data/lib/webpacker.rb +8 -0
- data/lib/webpacker/commands.rb +20 -18
- data/lib/webpacker/version.rb +1 -1
- data/package.json +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d57c77fb839f38501e9c45ed502a196d618ce449d325c733f90ae95da4d53614
|
4
|
+
data.tar.gz: e978c0e6a5f9e00c065d01114f610095d8ff8677e4de210919b9b537b9a9ef24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17bc7a08a4d9acb876d720d03fcdfd43a64aab320c54924d2067107e5bab372f2abaddc6cb9704f334ef5aebc0c2259afbe3335a84ea62d07d98e4fd456609bc
|
7
|
+
data.tar.gz: 3bf0e8243fd43852c02bde42fe8ab20cdeaf1cb9e7f7a2a51d0cfe9b2aa0e1fad8ab03c596764f0c5de7109558676e0f8a3be94f8de880c27a2d18de9d9df6bf
|
data/CHANGELOG.md
CHANGED
@@ -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
|
56
|
+
import '@babel/polyfill'
|
53
57
|
```
|
54
58
|
|
55
59
|
to this:
|
56
60
|
|
57
61
|
```js
|
58
|
-
import
|
59
|
-
import
|
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(
|
97
|
-
environment.config.merge({ devtool:
|
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(
|
151
|
-
const { join } = require(
|
154
|
+
const { environment, config } = require('@rails/webpacker')
|
155
|
+
const { join } = require('path')
|
152
156
|
|
153
|
-
const fileLoader = environment.loaders.get(
|
154
|
-
fileLoader.use[0].options.name =
|
155
|
-
fileLoader.use[0].options.context = join(config.source_path)
|
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(
|
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(
|
425
|
+
const { environment } = require('@rails/webpacker')
|
422
426
|
|
423
|
-
environment.loaders.append(
|
427
|
+
environment.loaders.append('json', {
|
424
428
|
test: /\.json$/,
|
425
|
-
use:
|
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(
|
494
|
-
const elm = require(
|
495
|
-
const typescript = require(
|
496
|
-
const vue = require(
|
497
|
-
const coffee = require(
|
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(
|
500
|
-
environment.loaders.append(
|
501
|
-
environment.loaders.append(
|
502
|
-
environment.loaders.append(
|
503
|
-
environment.loaders.append(
|
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(
|
557
|
-
environment.config.set(
|
558
|
-
environment.config.delete(
|
559
|
-
environment.config.get(
|
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:
|
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:
|
574
|
-
}
|
577
|
+
loader: 'json-loader'
|
578
|
+
}
|
575
579
|
|
576
|
-
environment.loaders.append(
|
577
|
-
environment.loaders.prepend(
|
578
|
-
environment.loaders.insert(
|
579
|
-
environment.loaders.insert(
|
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(
|
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(
|
590
|
+
const babelLoader = environment.loaders.get('babel')
|
587
591
|
environment.loaders.insert(
|
588
|
-
|
592
|
+
'coffee',
|
589
593
|
{
|
590
594
|
test: /\.coffee(\.erb)?$/,
|
591
|
-
use: babelLoader.use.concat([
|
595
|
+
use: babelLoader.use.concat(['coffee-loader'])
|
592
596
|
},
|
593
|
-
{ before:
|
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(
|
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(
|
612
|
-
const cssLoader = sassLoader.use.find(loader => loader.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:
|
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
|
-
|
629
|
+
'Access-Control-Allow-Origin': '*'
|
626
630
|
watch_options:
|
627
631
|
ignored: /node_modules/
|
628
632
|
```
|
data/Gemfile.lock
CHANGED
data/lib/install/template.rb
CHANGED
@@ -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.
|
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
|
data/lib/webpacker.rb
CHANGED
@@ -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
|
data/lib/webpacker/commands.rb
CHANGED
@@ -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(
|
9
|
-
if config.public_output_path.exist? && config.public_manifest_path.exist?
|
10
|
-
|
11
|
-
|
12
|
-
|
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
|
42
|
-
|
43
|
-
|
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.
|
48
|
+
end.compact
|
47
49
|
end
|
48
50
|
end
|
data/lib/webpacker/version.rb
CHANGED
data/package.json
CHANGED
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.
|
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-
|
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.
|
291
|
-
changelog_uri: https://github.com/rails/webpacker/blob/v4.2.
|
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:
|