laravel-mix-imagemin icon indicating copy to clipboard operation
laravel-mix-imagemin copied to clipboard

Invalid options object. Copy Plugin has been initialized using an options object that does not match the API schema.

Open sillexo opened this issue 4 years ago • 12 comments

Hello! I get this error.

Invalid options object. Copy Plugin has been initialized using an options object that does not match the API schema.
 options[0] should be an object:
   object { patterns, options? }
ValidationError: Invalid options object. Copy Plugin has been initialized using an options object that does not match the API schema.
    at validate (.\node_modules\copy-webpack-plugin\node_modules\schema-utils\dist\validate.js:96:11)
    at new CopyPlugin (.\node_modules\copy-webpack-plugin\dist\index.js:24:30)
    at Imagemin.webpackPlugins (.\node_modules\laravel-mix-imagemin\src\Imagemin.js:31:13)
    at ComponentFactory.applyPlugins (.\node_modules\laravel-mix\src\components\ComponentFactory.js:167:23)
    at .\node_modules\laravel-mix\src\components\ComponentFactory.js:71:26
    at .\node_modules\laravel-mix\src\Dispatcher.js:34:47
    at Array.forEach (<anonymous>)
    at Dispatcher.fire (.\node_modules\laravel-mix\src\Dispatcher.js:34:28)
    at Mix.dispatch (.\node_modules\laravel-mix\src\Mix.js:118:25)
    at WebpackConfig.buildPlugins (.\node_modules\laravel-mix\src\builder\WebpackConfig.js:103:13)
    at WebpackConfig.build (.\node_modules\laravel-mix\src\builder\WebpackConfig.js:24:14)
    at Object.<anonymous> (.\node_modules\laravel-mix\setup\webpack.config.js:29:38)
    at Module._compile (.\node_modules\v8-compile-cache\v8-compile-cache.js:192:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
    at Module.load (internal/modules/cjs/loader.js:1002:32)
    at Function.Module._load (internal/modules/cjs/loader.js:901:14)
    at Module.require (internal/modules/cjs/loader.js:1044:19)
    at require (.\node_modules\v8-compile-cache\v8-compile-cache.js:161:20)

My code:

mix.imagemin(
        'images/**/**.*', {
            context: 'resources'
        }, {
            optipng: {
                optimizationLevel: 5
            },
            jpegtran: null,
            plugins: [
                require('imagemin-mozjpeg')({
                    quality: 100,
                    progressive: true,
                }),
            ],
        }
    )

sillexo avatar Jun 16 '20 14:06 sillexo

I have the same problem, i changed 'img/**.*' to { patterns: [ { from: 'img/**.*', to: 'public/img' } ] } to match this signature: https://webpack.js.org/plugins/copy-webpack-plugin/#options but now I get this error: TypeError: glob pattern string required at new Minimatch

kpracuk avatar Jun 16 '20 21:06 kpracuk

Temporary solution: https://github.com/CupOfTea696/laravel-mix-imagemin/issues/9#issuecomment-639407324

SasSam avatar Jun 21 '20 12:06 SasSam

+1

ftbastler avatar Aug 01 '20 18:08 ftbastler

Is this possible to update the options for copy-webpack-plugin please ?

Index: README.md
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- README.md	(revision 306369543ca2c0de498732d1622aeaadb7cea57f)
+++ README.md	(revision dcc6772017803e59f141032b715f3ae8d4cc5b49)
@@ -47,7 +47,9 @@
     .imagemin(
         'img/**.*',
         {
-            context: 'resources',
+            patterns: [
+                { from: 'resources', to: 'public' },
+            ],
         },
         {
             optipng: {
Index: src/Imagemin.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/Imagemin.js	(revision 306369543ca2c0de498732d1622aeaadb7cea57f)
+++ src/Imagemin.js	(revision dcc6772017803e59f141032b715f3ae8d4cc5b49)
@@ -28,7 +28,7 @@
         let {patterns, copyOptions, imageminOptions} = this;
 
         return [
-            new CopyWebpackPlugin(patterns, copyOptions),
+            new CopyWebpackPlugin(copyOptions),
             new ImageminPlugin(imageminOptions),
             new ManifestPlugin(patterns),
         ];

tsecher avatar Aug 25 '20 09:08 tsecher

Further fuel to that fire...

# Run  npm install --save-dev [email protected]  to resolve 1 vulnerability
SEMVER WARNING: Recommended action is a potentially breaking change
 High                    Remote Code Execution                                        
 Package              serialize-javascript                                         
 Dependency of  copy-webpack-plugin [dev]                                    
 Path                    copy-webpack-plugin > serialize-javascript                   
 More info           https://npmjs.com/advisories/1548                            
found 1 high severity vulnerability in 1779 scanned packages
  1 vulnerability requires semver-major dependency updates.

securit avatar Sep 24 '20 22:09 securit

Has there been any resolution on this? I'd rather not use the solution in #9 if possible since it introduces a security vulnerability.

brianrivet-tilt avatar Oct 26 '20 05:10 brianrivet-tilt

@CupOfTea696 any chance this can get fixed? copy-webpack-plugin is the only dependency that has to remain outdated at a lower version.

markhalliwell avatar Nov 11 '20 21:11 markhalliwell

I needed this for few projects so I forked this repo to TooDotsLtd/laravel-mix-imagemin. It's been quiet here for too long to just ignore the issue!

How to use my fork?

In your package.json find line referencing laravel-mix-imagemin and change it to:

"laravel-mix-imagemin": "github:TooDotsLtd/laravel-mix-imagemin",

and run npm update.

ryanw3b3r avatar Nov 22 '20 13:11 ryanw3b3r

Hi @ryanw3b3r, we have been using your fork successfully for quite some time to get around this issue in the base extensions, however it seems your GitHub repo has been removed, so the fork is no longer working. Is this temporary, or could you please reupload? Thanks.

alexryans avatar Feb 21 '22 08:02 alexryans

Hi @alexryans, sorry but we've had to delete this fork due to changes in company's t&c's. I think you can still use @mariovalney's fork from https://github.com/mariovalney/laravel-mix-imagemin but contact the owner to confirm.

ryanw3b3r avatar Feb 21 '22 20:02 ryanw3b3r

@ryanw3b3r No worries, thanks for getting back to me so quickly!

alexryans avatar Feb 22 '22 08:02 alexryans

I've been maintaining this fork, which is also published on NPM.

chiiya avatar Mar 19 '22 23:03 chiiya