How to use flatten setting in webpack 5 copy-webpack-plugin

4k Views Asked by At

I use copy-webpack-plugin 10.2.0 and webpack 5.65.0. I want to copy js file in public/js folder to dist/js.

plugins: [
    new CopyWebpackPlugin({
        patterns:[
            {
                from:'public/js/*.js',
                to:path.resolve(__dirname, 'dist','js'),
            
            }
        ]
    })
],

But the setting also copy the path into dist, and it becomes dist/js/public/js.I try to add flatten:true but it has error

Invalid options object. Copy Plugin has been initialized using an options object that does not match the API schema.
 - options.patterns[0] has an unknown property 'flatten'. These properties are valid:
   object { from, to?, context?, globOptions?, filter?, transformAll?, toType?, force?, priority?, info?, transform?, noErrorOnMissing? }

How to make it then ?

1

There are 1 best solutions below

0
Mario Varchmin On BEST ANSWER

You can set the filename in the to parameter using the [name] and [ext] components and simply omit the path part.

plugins: [
    new CopyWebpackPlugin({
        patterns:[
            {
                from:'public/js/*.js',
                to:path.resolve(__dirname, 'dist','js', '[name][ext]'),
            
            }
        ]
    })
],