webpacker 4.2.0 → 4.2.1
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.
- 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:
|