-
-
Notifications
You must be signed in to change notification settings - Fork 285
Description
System
-
Operating System: Windows 10
-
Node Version: v12.18.3
-
NPM Version: 6.14.6
-
webpack Version: 5.1.0
-
copy-webpack-plugin Version: 6.2.1
-
Yarn version: 1.12.3
-
webpack-dev-server version: 3.11.0
Expected Behavior
The following command:
yarn run webpack serve
should cause a single initial compilation.
Actual Behavior
Two initial compilations occur when using copy-webpack-plugin to copy from directories with no files as direct children. E.g.:
- assets
- moreAssets
- asset.txt
Here assets has no files as direct children. assets contains a single directory, moreAssets which in turn contains a file.
Code
Complete reproduction can be found here: reproduction repository.
webpack.config.js:
const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
plugins: [
new CopyWebpackPlugin({
patterns: [{
from: path.resolve(__dirname, 'assets', '**', '*').replace(/\\/g, '/'),
to: path.resolve(__dirname, 'dist').replace(/\\/g, '/'),
}]
})
]
};How Do We Reproduce?
Clone the repro, install dependencies and run webpack serve:
git clone https://github.com/JeremyTCD/double.compilation.repro.git
cd .\double.compilation.repro\
yarn install
yarn run webpack serve
Example output:
yarn run v1.12.3
$ C:\Users\Jeremy\Desktop\double.compilation.repro\node_modules\.bin\webpack serve
i 「wds」: Project is running at http://localhost:8080/
i 「wds」: webpack output is served from undefined
i 「wds」: Content not from webpack is served from C:\Users\Jeremy\Desktop\double.compilation.repro
i 「wdm」: asset main.js 146 KiB [emitted] [minimized] (name: main) 1 related asset
asset assets/moreAssets/dummyAsset.txt 4 bytes [emitted] [copied]
runtime modules 430 bytes 3 modules
cacheable modules 330 KiB
modules by path ./node_modules/webpack-dev-server/ 21.2 KiB
modules by path ./node_modules/webpack-dev-server/client/ 20.9 KiB 10 modules
modules by path ./node_modules/webpack-dev-server/node_modules/ 296 bytes 2 modules
modules by path ./node_modules/html-entities/lib/*.js 57.9 KiB 4 modules
modules by path ./node_modules/url/ 37.4 KiB 3 modules
modules by path ./node_modules/querystring/*.js 4.51 KiB
./node_modules/querystring/index.js 127 bytes [built] [code generated]
./node_modules/querystring/decode.js 2.34 KiB [built] [code generated]
./node_modules/querystring/encode.js 2.04 KiB [built] [code generated]
modules by path ./node_modules/webpack/hot/*.js 1.42 KiB
./node_modules/webpack/hot/emitter.js 75 bytes [built] [code generated]
./node_modules/webpack/hot/log.js 1.34 KiB [built] [code generated]
./node_modules/webpack/hot/ sync nonrecursive ^\.\/log$ 170 bytes [built] [code generated]
webpack 5.1.0 compiled successfully in 2442 ms
i 「wdm」: Compiled successfully.
i 「wdm」: Compiling...
i 「wdm」: asset main.js 146 KiB [emitted] [minimized] (name: main) 1 related asset
asset assets/moreAssets/dummyAsset.txt 4 bytes [emitted] [copied]
runtime modules 430 bytes 3 modules
cacheable modules 330 KiB
modules by path ./node_modules/webpack-dev-server/ 21.2 KiB
modules by path ./node_modules/webpack-dev-server/client/ 20.9 KiB 10 modules
modules by path ./node_modules/webpack-dev-server/node_modules/ 296 bytes 2 modules
modules by path ./node_modules/html-entities/lib/*.js 57.9 KiB 4 modules
modules by path ./node_modules/url/ 37.4 KiB 3 modules
modules by path ./node_modules/querystring/*.js 4.51 KiB
./node_modules/querystring/index.js 127 bytes [built] [code generated]
./node_modules/querystring/decode.js 2.34 KiB [built] [code generated]
./node_modules/querystring/encode.js 2.04 KiB [built] [code generated]
modules by path ./node_modules/webpack/hot/*.js 1.42 KiB
./node_modules/webpack/hot/emitter.js 75 bytes [built] [code generated]
./node_modules/webpack/hot/log.js 1.34 KiB [built] [code generated]
./node_modules/webpack/hot/ sync nonrecursive ^\.\/log$ 170 bytes [built] [code generated]
webpack 5.1.0 compiled successfully in 2301 ms
i 「wdm」: Compiled successfully.
I've added a line between the compilations above. The redundant compilation always occurs immediately after the first.