Skip to content

Commit 4f6171b

Browse files
committed
Update WebpackManifestPlugin to v3.0.0 and vue-loader to v16.1.0
1 parent 9af90ee commit 4f6171b

File tree

6 files changed

+1150
-2752
lines changed

6 files changed

+1150
-2752
lines changed

Diff for: lib/plugins/manifest.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
'use strict';
1111

1212
const WebpackConfig = require('../WebpackConfig'); //eslint-disable-line no-unused-vars
13-
const ManifestPlugin = require('webpack-manifest-plugin');
13+
const { WebpackManifestPlugin } = require('webpack-manifest-plugin');
1414
const PluginPriorities = require('./plugin-priorities');
1515
const applyOptionsCallback = require('../utils/apply-options-callback');
1616
const copyEntryTmpName = require('../utils/copyEntryTmpName');
@@ -28,12 +28,16 @@ module.exports = function(plugins, webpackConfig) {
2828
// always write a manifest.json file, even with webpack-dev-server
2929
writeToFileEmit: true,
3030
filter: (file) => {
31-
return (!file.isChunk || copyEntryTmpName !== file.chunk.id);
31+
const isCopyEntry = file.isChunk && copyEntryTmpName === file.chunk.id;
32+
const isStyleEntry = file.isChunk && webpackConfig.styleEntries.has(file.chunk.name);
33+
const isJsOrJsMapFile = /\.js(\.map)?$/.test(file.name);
34+
35+
return !isCopyEntry && !(isStyleEntry && isJsOrJsMapFile);
3236
}
3337
};
3438

3539
plugins.push({
36-
plugin: new ManifestPlugin(
40+
plugin: new WebpackManifestPlugin(
3741
applyOptionsCallback(webpackConfig.manifestPluginOptionsCallback, manifestPluginOptions)
3842
),
3943
priority: PluginPriorities.WebpackManifestPlugin

Diff for: package.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"url": "https://github.com/symfony/webpack-encore/issues"
2222
},
2323
"engines": {
24-
"node": "^10.13.0 || >=12.0.0"
24+
"node": "^10.22.1 || >=12.0.0"
2525
},
2626
"homepage": "https://github.com/symfony/webpack-encore",
2727
"dependencies": {
@@ -49,7 +49,7 @@
4949
"webpack": "^5",
5050
"webpack-cli": "^4",
5151
"webpack-dev-server": "^3.1.14",
52-
"webpack-manifest-plugin": "^3.0.0-rc",
52+
"webpack-manifest-plugin": "^3",
5353
"webpack-sources": "^1.3.0",
5454
"webpack-virtual-modules": "^0.2.2",
5555
"yargs-parser": "^18.1.3"
@@ -59,9 +59,9 @@
5959
"@babel/plugin-transform-react-jsx": "^7.0.0",
6060
"@babel/preset-react": "^7.0.0",
6161
"@babel/preset-typescript": "^7.0.0",
62-
"@symfony/mock-module": "file:fixtures/stimulus/mock-module",
63-
"@symfony/controllers": "file:fixtures/stimulus/controllers",
6462
"@symfony/autoimport": "file:fixtures/stimulus/autoimport",
63+
"@symfony/controllers": "file:fixtures/stimulus/controllers",
64+
"@symfony/mock-module": "file:fixtures/stimulus/mock-module",
6565
"@symfony/stimulus-bridge": "^1.0.0",
6666
"@vue/babel-helper-vue-jsx-merge-props": "^1.0.0-beta.3",
6767
"@vue/babel-preset-jsx": "^1.0.0-beta.3",
@@ -100,7 +100,7 @@
100100
"typescript": ">=3.6.3",
101101
"url-loader": "^4.1.0",
102102
"vue": "^3.0.2",
103-
"vue-loader": "^16.0.0-rc.2",
103+
"vue-loader": "^16.1.0",
104104
"vue-template-compiler": "^2.5",
105105
"webpack-notifier": "^1.6.0",
106106
"zombie": "^6.1.4"

Diff for: test/config-generator.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const WebpackConfig = require('../lib/WebpackConfig');
1414
const RuntimeConfig = require('../lib/config/RuntimeConfig');
1515
const configGenerator = require('../lib/config-generator');
1616
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
17-
const ManifestPlugin = require('webpack-manifest-plugin');
17+
const { WebpackManifestPlugin } = require('webpack-manifest-plugin');
1818
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
1919
const webpack = require('webpack');
2020
const path = require('path');
@@ -157,10 +157,10 @@ describe('The config-generator function', () => {
157157
const actualConfig = configGenerator(config);
158158

159159
expect(actualConfig.output.publicPath).to.equal('/build/');
160-
const manifestPlugin = findPlugin(ManifestPlugin, actualConfig.plugins);
160+
const manifestPlugin = findPlugin(WebpackManifestPlugin, actualConfig.plugins);
161161
// basePath matches publicPath, *without* the opening slash
162162
// we do that by convention: keys do not start with /
163-
expect(manifestPlugin.opts.basePath).to.equal('build/');
163+
expect(manifestPlugin.options.basePath).to.equal('build/');
164164
});
165165

166166
it('when manifestKeyPrefix is set, that is used instead', () => {
@@ -174,10 +174,10 @@ describe('The config-generator function', () => {
174174
const actualConfig = configGenerator(config);
175175

176176
expect(actualConfig.output.publicPath).to.equal('/subdirectory/build/');
177-
const manifestPlugin = findPlugin(ManifestPlugin, actualConfig.plugins);
177+
const manifestPlugin = findPlugin(WebpackManifestPlugin, actualConfig.plugins);
178178
// base path matches manifestKeyPrefix + trailing slash
179179
// the opening slash is kept, since the user is overriding this setting
180-
expect(manifestPlugin.opts.basePath).to.equal('/build/');
180+
expect(manifestPlugin.options.basePath).to.equal('/build/');
181181
});
182182

183183
it('manifestKeyPrefix can be empty', () => {
@@ -189,8 +189,8 @@ describe('The config-generator function', () => {
189189

190190
const actualConfig = configGenerator(config);
191191

192-
const manifestPlugin = findPlugin(ManifestPlugin, actualConfig.plugins);
193-
expect(manifestPlugin.opts.basePath).to.equal('');
192+
const manifestPlugin = findPlugin(WebpackManifestPlugin, actualConfig.plugins);
193+
expect(manifestPlugin.options.basePath).to.equal('');
194194
});
195195
});
196196

Diff for: test/functional.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ describe('Functional tests using webpack', function() {
478478

479479
it('With source maps in production mode', (done) => {
480480
const config = createWebpackConfig('web', 'production');
481-
config.addEntry('main', './js/no_require');
481+
config.addEntry('main', './js/arrow_function');
482482
config.setPublicPath('/');
483483
config.addStyleEntry('styles', './css/h1_style.css');
484484
config.enableSourceMaps(true);

Diff for: test/plugins/manifest.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
'use strict';
1111

1212
const expect = require('chai').expect;
13-
const ManifestPlugin = require('webpack-manifest-plugin');
13+
const { WebpackManifestPlugin } = require('webpack-manifest-plugin');
1414
const WebpackConfig = require('../../lib/WebpackConfig');
1515
const RuntimeConfig = require('../../lib/config/RuntimeConfig');
1616
const manifestPluginUtil = require('../../lib/plugins/manifest');
@@ -32,8 +32,8 @@ describe('plugins/manifest', () => {
3232

3333
manifestPluginUtil(plugins, config);
3434
expect(plugins.length).to.equal(1);
35-
expect(plugins[0].plugin).to.be.instanceof(ManifestPlugin);
36-
expect(plugins[0].plugin.opts.fileName).to.equal('manifest.json');
35+
expect(plugins[0].plugin).to.be.instanceof(WebpackManifestPlugin);
36+
expect(plugins[0].plugin.options.fileName).to.equal('manifest.json');
3737
});
3838

3939
it('with options callback', () => {
@@ -46,10 +46,10 @@ describe('plugins/manifest', () => {
4646

4747
manifestPluginUtil(plugins, config);
4848
expect(plugins.length).to.equal(1);
49-
expect(plugins[0].plugin).to.be.instanceof(ManifestPlugin);
49+
expect(plugins[0].plugin).to.be.instanceof(WebpackManifestPlugin);
5050

5151
// Allows to override default options
52-
expect(plugins[0].plugin.opts.fileName).to.equal('bar');
52+
expect(plugins[0].plugin.options.fileName).to.equal('bar');
5353
});
5454

5555
it('with options callback that returns an object', () => {
@@ -65,8 +65,8 @@ describe('plugins/manifest', () => {
6565

6666
manifestPluginUtil(plugins, config);
6767
expect(plugins.length).to.equal(1);
68-
expect(plugins[0].plugin).to.be.instanceof(ManifestPlugin);
69-
expect(plugins[0].plugin.opts.fileName).to.equal('manifest.json');
70-
expect(plugins[0].plugin.opts.foo).to.equal(true);
68+
expect(plugins[0].plugin).to.be.instanceof(WebpackManifestPlugin);
69+
expect(plugins[0].plugin.options.fileName).to.equal('manifest.json');
70+
expect(plugins[0].plugin.options.foo).to.equal(true);
7171
});
7272
});

0 commit comments

Comments
 (0)