2017-01-07 10:36:33 +08:00
"use strict" ;
2018-12-09 21:26:35 +08:00
const webpack = require ( ".." ) ;
2016-09-19 06:54:35 +08:00
2017-01-18 23:29:47 +08:00
describe ( "Validation" , ( ) => {
2019-05-21 16:38:16 +08:00
const createTestCase = ( name , config , fn ) => {
it ( "should fail validation for " + name , ( ) => {
try {
webpack ( config ) ;
} catch ( err ) {
2019-08-07 21:55:03 +08:00
if ( err . name !== "ValidationError" ) throw err ;
2019-05-21 16:38:16 +08:00
expect ( err . message ) . toMatch ( /^Invalid configuration object./ ) ;
fn ( err . message ) ;
return ;
}
throw new Error ( "Validation didn't fail" ) ;
} ) ;
} ;
createTestCase ( "undefined configuration" , undefined , msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration should be an object :
object { amd ? , bail ? , cache ? , context ? , dependencies ? , devServer ? , devtool ? , entry ? , experiments ? , externals ? , infrastructureLogging ? , loader ? , mode ? , module ? , name ? , node ? , optimization ? , output ? , parallelism ? , performance ? , plugins ? , profile ? , recordsInputPath ? , recordsOutputPath ? , recordsPath ? , resolve ? , resolveLoader ? , serve ? , stats ? , target ? , watch ? , watchOptions ? } "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase ( "null configuration" , null , msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration should be an object :
object { amd ? , bail ? , cache ? , context ? , dependencies ? , devServer ? , devtool ? , entry ? , experiments ? , externals ? , infrastructureLogging ? , loader ? , mode ? , module ? , name ? , node ? , optimization ? , output ? , parallelism ? , performance ? , plugins ? , profile ? , recordsInputPath ? , recordsOutputPath ? , recordsPath ? , resolve ? , resolveLoader ? , serve ? , stats ? , target ? , watch ? , watchOptions ? } "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"empty entry string" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : ""
2016-09-19 06:54:35 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . entry should be an non - empty string .
2020-02-05 15:28:49 +08:00
- > The string is resolved to a module which is loaded upon startup . "
2019-08-07 21:55:03 +08:00
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"empty entry bundle array" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : {
bundle : [ ]
}
2017-01-04 13:23:57 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . entry [ 'bundle' ] should be an non - empty array .
- > A non - empty array of non - empty strings "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"invalid instanceof" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "a" ,
module : {
wrappedContextRegExp : 1337
}
2016-11-04 06:52:59 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . module . wrappedContextRegExp should be an instance of RegExp
- > Set the inner regular expression for partial dynamic dependencies . "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"invalid minimum" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "a" ,
parallelism : 0
2017-11-16 15:59:22 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . parallelism should be >= 1.
- > The number of parallel processed modules in the compilation . "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"repeated value" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : [ "abc" , "def" , "abc" ]
2017-11-16 15:59:22 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . entry should not contain the item 'abc' twice .
- > A non - empty array of non - empty strings "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"multiple errors" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : [ /a/ ] ,
output : {
filename : /a/
}
2016-09-19 06:54:35 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . entry [ 0 ] should be a non - empty string .
- > A non - empty string
- configuration . output . filename should be one of these :
non - empty string | function
- > Specifies the name of each output file on disk . You must * * not * * specify an absolute path here ! The \ ` output.path \` option determines the location on disk the files are written to, filename is used solely for naming the individual files.
Details :
* configuration . output . filename should be a non - empty string .
* configuration . output . filename should be an instance of function . "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"multiple configurations" ,
[
{
entry : [ /a/ ]
2018-02-25 18:46:17 +08:00
} ,
2019-05-21 16:38:16 +08:00
{
entry : "a" ,
2018-02-25 18:46:17 +08:00
output : {
filename : /a/
}
2019-05-21 16:38:16 +08:00
}
] ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration [ 0 ] . entry [ 0 ] should be a non - empty string .
- > A non - empty string
- configuration [ 1 ] . output . filename should be one of these :
non - empty string | function
- > Specifies the name of each output file on disk . You must * * not * * specify an absolute path here ! The \ ` output.path \` option determines the location on disk the files are written to, filename is used solely for naming the individual files.
Details :
* configuration [ 1 ] . output . filename should be a non - empty string .
* configuration [ 1 ] . output . filename should be an instance of function . "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"deep error" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "a" ,
module : {
rules : [
{
oneOf : [
{
test : "/a" ,
passer : {
amd : false
2018-02-25 18:46:17 +08:00
}
2019-05-21 16:38:16 +08:00
}
]
2018-02-25 18:46:17 +08:00
}
2019-05-21 16:38:16 +08:00
]
}
2018-02-25 18:46:17 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . module . rules [ 0 ] . oneOf [ 0 ] has an unknown property 'passer' . These properties are valid :
2019-11-18 21:29:19 +08:00
object { compiler ? , enforce ? , exclude ? , generator ? , include ? , issuer ? , loader ? , oneOf ? , options ? , parser ? , realResource ? , resolve ? , resource ? , resourceQuery ? , rules ? , sideEffects ? , test ? , type ? , use ? }
2019-08-07 21:55:03 +08:00
- > A rule "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"additional key on root" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "a" ,
postcss : ( ) => { }
2016-09-21 02:18:52 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration has an unknown property 'postcss' . These properties are valid :
object { amd ? , bail ? , cache ? , context ? , dependencies ? , devServer ? , devtool ? , entry ? , experiments ? , externals ? , infrastructureLogging ? , loader ? , mode ? , module ? , name ? , node ? , optimization ? , output ? , parallelism ? , performance ? , plugins ? , profile ? , recordsInputPath ? , recordsOutputPath ? , recordsPath ? , resolve ? , resolveLoader ? , serve ? , stats ? , target ? , watch ? , watchOptions ? }
For typos : please correct them .
For loader options : webpack >= v2 . 0.0 no longer allows custom properties in configuration .
Loaders should be updated to allow passing options via loader options in module . rules .
Until loaders are updated one can use the LoaderOptionsPlugin to pass these options to the loader :
plugins : [
new webpack . LoaderOptionsPlugin ( {
// test: /\\\\.xxx$/, // may apply this only for some modules
options : {
postcss : …
}
} )
] "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"enum" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "a" ,
devtool : true
2016-12-14 19:03:24 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . devtool should be one of these :
2019-10-18 20:58:50 +08:00
false | \ \ "eval\\" | string ( should match pattern \ \ "^(inline-|hidden-|eval-)?(nosources-)?(cheap-(module-)?)?source-map$\\" )
- > A developer tool to enhance debugging ( false | eval | [ inline - | hidden - | eval - ] [ nosources - ] [ cheap - [ module - ] ] source - map ) .
Details :
* configuration . devtool should be one of these :
false | \ \ "eval\\"
* configuration . devtool should be a string ( should match pattern \ \ "^(inline-|hidden-|eval-)?(nosources-)?(cheap-(module-)?)?source-map$\\" ) . "
2019-08-07 21:55:03 +08:00
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"! in path" ,
2018-03-15 16:24:40 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "foo.js" ,
output : {
path : "/somepath/!test" ,
filename : "bar"
}
2018-03-15 16:24:40 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . output . path : The provided value \ \ "/somepath/!test\\" contains exclamation mark ( ! ) which is not allowed because it ' s reserved for loader syntax .
- > The output directory as * * absolute path * * ( required ) . "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"relative path" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "foo.js" ,
output : {
filename : "/bar"
}
2017-02-03 21:49:38 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . output . filename : A relative path is expected . However , the provided value \ \ "/bar\\" is an absolute path !
Please use output . path to specify absolute path and output . filename for the file name . "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"absolute path" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "foo.js" ,
output : {
filename : "bar"
2017-02-03 21:49:38 +08:00
} ,
2019-05-21 16:38:16 +08:00
context : "baz"
2017-02-03 21:49:38 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . context : The provided value \ \ "baz\\" is not an absolute path !
- > The base directory ( absolute path ! ) for resolving the \ ` entry \` option. If \` output.pathinfo \` is set, the included pathinfo is shortened to this directory."
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"missing stats option" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "foo.js" ,
stats : {
foobar : true
2017-10-14 06:12:24 +08:00
}
} ,
2019-05-21 16:38:16 +08:00
msg => {
expect (
msg
. replace ( /object \{ .* \}/g , "object {...}" )
. replace ( /"none" \| .+/g , '"none" | ...' )
) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . stats has an unknown property 'foobar' . These properties are valid :
object { ... } "
` );
2019-05-21 16:38:16 +08:00
}
) ;
createTestCase (
"Invalid plugin provided: bool" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "foo.js" ,
plugins : [ false ]
2017-11-25 00:54:48 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . plugins [ 0 ] should be one of these :
object { apply , … } | function
- > Plugin of type object or instanceof Function
Details :
* configuration . plugins [ 0 ] should be an object :
object { apply , … }
- > Plugin instance
* configuration . plugins [ 0 ] should be an instance of function
- > Function acting as plugin . "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"Invalid plugin provided: array" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "foo.js" ,
plugins : [ [ ] ]
2017-11-25 00:54:48 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . plugins [ 0 ] should be one of these :
object { apply , … } | function
- > Plugin of type object or instanceof Function
Details :
* configuration . plugins [ 0 ] should be an object :
object { apply , … }
- > Plugin instance
* configuration . plugins [ 0 ] should be an instance of function
- > Function acting as plugin . "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"Invalid plugin provided: string" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "foo.js" ,
plugins : [ "abc123" ]
2017-11-25 00:54:48 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . plugins [ 0 ] should be one of these :
object { apply , … } | function
- > Plugin of type object or instanceof Function
Details :
* configuration . plugins [ 0 ] should be an object :
object { apply , … }
- > Plugin instance
* configuration . plugins [ 0 ] should be an instance of function
- > Function acting as plugin . "
` )
2019-05-21 16:38:16 +08:00
) ;
createTestCase (
"Invalid plugin provided: int" ,
2018-02-25 18:46:17 +08:00
{
2019-05-21 16:38:16 +08:00
entry : "foo.js" ,
plugins : [ 12 ]
2017-11-25 00:54:48 +08:00
} ,
2019-05-21 16:38:16 +08:00
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . plugins [ 0 ] should be one of these :
object { apply , … } | function
- > Plugin of type object or instanceof Function
Details :
* configuration . plugins [ 0 ] should be an object :
object { apply , … }
- > Plugin instance
* configuration . plugins [ 0 ] should be an instance of function
- > Function acting as plugin . "
` )
2019-05-21 16:38:16 +08:00
) ;
2017-11-03 06:28:34 +08:00
2019-05-21 16:38:16 +08:00
createTestCase (
"Invalid plugin provided: object without apply function" ,
{
entry : "foo.js" ,
plugins : [ { } ]
} ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . plugins [ 0 ] misses the property 'apply' . Should be :
function
- > The run point of the plugin , required method . "
` )
2019-05-21 16:38:37 +08:00
) ;
2017-11-03 06:28:34 +08:00
2019-05-21 16:38:37 +08:00
createTestCase (
"invalid mode" ,
{
mode : "protuction"
} ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration . mode should be one of these :
\ \ "development\\" | \ \ "production\\" | \ \ "none\\"
- > Enable production optimizations or development hints . "
` )
) ;
createTestCase (
"debug" ,
{
debug : true
} ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration has an unknown property 'debug' . These properties are valid :
object { amd ? , bail ? , cache ? , context ? , dependencies ? , devServer ? , devtool ? , entry ? , experiments ? , externals ? , infrastructureLogging ? , loader ? , mode ? , module ? , name ? , node ? , optimization ? , output ? , parallelism ? , performance ? , plugins ? , profile ? , recordsInputPath ? , recordsOutputPath ? , recordsPath ? , resolve ? , resolveLoader ? , serve ? , stats ? , target ? , watch ? , watchOptions ? }
The 'debug' property was removed in webpack 2.0 . 0.
Loaders should be updated to allow passing this option via loader options in module . rules .
Until loaders are updated one can use the LoaderOptionsPlugin to switch loaders into debug mode :
plugins : [
new webpack . LoaderOptionsPlugin ( {
debug : true
} )
] "
` )
2019-06-20 00:55:27 +08:00
) ;
2019-09-24 23:17:26 +08:00
createTestCase (
"missing cache group name" ,
{
optimization : {
splitChunks : {
cacheGroups : {
test : /abc/
}
}
}
} ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-09-24 23:17:26 +08:00
- configuration . optimization . splitChunks . cacheGroups should not be object { test , … }
- > Using the cacheGroup shorthand syntax with a cache group named 'test' is a potential config error
Did you intent to define a cache group with a test instead ?
cacheGroups : {
< name > : {
test : ...
}
}
2019-09-26 06:11:26 +08:00
object { < key > : false | function | string | RegExp | object { automaticNameDelimiter ? , chunks ? , enforce ? , filename ? , idHint ? , maxAsyncRequests ? , maxAsyncSize ? , maxInitialRequests ? , maxInitialSize ? , maxSize ? , minChunks ? , minRemainingSize ? , minSize ? , name ? , priority ? , reuseExistingChunk ? , test ? , type ? } }
- > Assign modules to a cache group ( modules from different cache groups are tried to keep in separate chunks , default categories : 'default' , 'defaultVendors' ) "
2019-09-24 23:17:26 +08:00
` )
2019-06-20 00:55:27 +08:00
) ;
createTestCase (
"holey array" ,
// eslint-disable-next-line no-sparse-arrays
[
{
mode : "production"
} ,
,
{
mode : "development"
}
] ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-08-07 21:55:03 +08:00
- configuration [ 1 ] should be an object :
object { amd ? , bail ? , cache ? , context ? , dependencies ? , devServer ? , devtool ? , entry ? , experiments ? , externals ? , infrastructureLogging ? , loader ? , mode ? , module ? , name ? , node ? , optimization ? , output ? , parallelism ? , performance ? , plugins ? , profile ? , recordsInputPath ? , recordsOutputPath ? , recordsPath ? , resolve ? , resolveLoader ? , serve ? , stats ? , target ? , watch ? , watchOptions ? } "
` )
2019-05-21 16:38:16 +08:00
) ;
2019-10-11 04:01:04 +08:00
createTestCase (
"ecmaVersion" ,
{
output : { ecmaVersion : 2008 }
} ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-10-11 04:01:04 +08:00
- configuration . output . ecmaVersion should be one of these :
2019-10-15 21:10:18 +08:00
number ( should be >= 5 and <= 11 ) | 2009 | number ( should be >= 2015 and <= 2020 )
2019-10-11 04:01:04 +08:00
- > The maximum EcmaScript version of the webpack generated code ( doesn ' t include input source code from modules ) .
Details :
2019-10-15 21:10:18 +08:00
* configuration . output . ecmaVersion should be >= 5 and <= 11.
* configuration . output . ecmaVersion should be >= 2015 and <= 2020. "
2019-10-11 04:01:04 +08:00
` )
) ;
createTestCase (
"ecmaVersion" ,
{
output : { ecmaVersion : 20008 }
} ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-10-11 04:01:04 +08:00
- configuration . output . ecmaVersion should be one of these :
2019-10-15 21:10:18 +08:00
number ( should be >= 5 and <= 11 ) | 2009 | number ( should be >= 2015 and <= 2020 )
2019-10-11 04:01:04 +08:00
- > The maximum EcmaScript version of the webpack generated code ( doesn ' t include input source code from modules ) .
Details :
2019-10-15 21:10:18 +08:00
* configuration . output . ecmaVersion should be >= 5 and <= 11.
* configuration . output . ecmaVersion should be >= 2015 and <= 2020. "
2019-10-11 04:01:04 +08:00
` )
) ;
createTestCase (
"ecmaVersion" ,
{
output : { ecmaVersion : 4 }
} ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-10-11 04:01:04 +08:00
- configuration . output . ecmaVersion should be one of these :
2019-10-15 21:10:18 +08:00
number ( should be >= 5 and <= 11 ) | 2009 | number ( should be >= 2015 and <= 2020 )
2019-10-11 04:01:04 +08:00
- > The maximum EcmaScript version of the webpack generated code ( doesn ' t include input source code from modules ) .
Details :
2019-10-15 21:10:18 +08:00
* configuration . output . ecmaVersion should be >= 5 and <= 11.
* configuration . output . ecmaVersion should be >= 2015 and <= 2020. "
2019-10-11 04:01:04 +08:00
` )
) ;
createTestCase (
"ecmaVersion" ,
{
output : { ecmaVersion : 40 }
} ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-10-11 04:01:04 +08:00
- configuration . output . ecmaVersion should be one of these :
2019-10-15 21:10:18 +08:00
number ( should be >= 5 and <= 11 ) | 2009 | number ( should be >= 2015 and <= 2020 )
2019-10-11 04:01:04 +08:00
- > The maximum EcmaScript version of the webpack generated code ( doesn ' t include input source code from modules ) .
Details :
2019-10-15 21:10:18 +08:00
* configuration . output . ecmaVersion should be >= 5 and <= 11.
* configuration . output . ecmaVersion should be >= 2015 and <= 2020. "
2019-10-11 04:01:04 +08:00
` )
) ;
2019-09-12 19:54:34 +08:00
createTestCase (
"devtool sourcemap" ,
{
devtool : "sourcemap"
} ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-10-18 20:58:50 +08:00
- configuration . devtool should match pattern \ \ "^(inline-|hidden-|eval-)?(nosources-)?(cheap-(module-)?)?source-map$\\" . "
2019-09-12 19:54:34 +08:00
` )
) ;
createTestCase (
"devtool source-maps" ,
{
devtool : "source-maps"
} ,
msg =>
expect ( msg ) . toMatchInlineSnapshot ( `
2020-01-18 01:29:58 +08:00
" Invalid configuration object . Webpack has been initialized using a configuration object that does not match the API schema .
2019-10-18 20:58:50 +08:00
- configuration . devtool should match pattern \ \ "^(inline-|hidden-|eval-)?(nosources-)?(cheap-(module-)?)?source-map$\\" . "
2019-09-12 19:54:34 +08:00
` )
) ;
2016-09-19 06:54:35 +08:00
} ) ;