39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| module.exports = function validateWebpackConfig (
 | |
|   webpackConfig,
 | |
|   api,
 | |
|   options,
 | |
|   target = 'app'
 | |
| ) {
 | |
|   const singleConfig = Array.isArray(webpackConfig)
 | |
|     ? webpackConfig[0]
 | |
|     : webpackConfig
 | |
| 
 | |
|   const actualTargetDir = singleConfig.output.path
 | |
| 
 | |
|   if (actualTargetDir !== api.resolve(options.outputDir)) {
 | |
|     // user directly modifies output.path in configureWebpack or chainWebpack.
 | |
|     // this is not supported because there's no way for us to give copy
 | |
|     // plugin the correct value this way.
 | |
|     throw new Error(
 | |
|       `\n\nConfiguration Error: ` +
 | |
|       `Avoid modifying webpack output.path directly. ` +
 | |
|       `Use the "outputDir" option instead.\n`
 | |
|     )
 | |
|   }
 | |
| 
 | |
|   if (actualTargetDir === api.service.context) {
 | |
|     throw new Error(
 | |
|       `\n\nConfiguration Error: ` +
 | |
|       `Do not set output directory to project root.\n`
 | |
|     )
 | |
|   }
 | |
| 
 | |
|   if (target === 'app' && singleConfig.output.publicPath !== options.publicPath) {
 | |
|     throw new Error(
 | |
|       `\n\nConfiguration Error: ` +
 | |
|       `Avoid modifying webpack output.publicPath directly. ` +
 | |
|       `Use the "publicPath" option instead.\n`
 | |
|     )
 | |
|   }
 | |
| }
 |