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`
 | 
						|
    )
 | 
						|
  }
 | 
						|
}
 |