You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							1.8 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							1.8 KiB
						
					
					
				const findBabelConfig = require('find-babel-config') | 
						|
const logger = require('./logger') | 
						|
const cache = require('./cache') | 
						|
const deprecate = require('./deprecate') | 
						|
const path = require('path') | 
						|
const { readFileSync, existsSync } = require('fs') | 
						|
 | 
						|
module.exports = function getBabelConfig (vueJestConfig, filePath) { | 
						|
  const find = () => { | 
						|
    const { file, config } = findBabelConfig.sync(filePath || process.cwd()) | 
						|
 | 
						|
    if (!file) { | 
						|
      logger.info('no .babelrc found, skipping babel compilation') | 
						|
      cache.set('babel-config', false) | 
						|
      return | 
						|
    } | 
						|
 | 
						|
    return config | 
						|
  } | 
						|
  const cachedConfig = cache.get('babel-config') | 
						|
  if (cachedConfig) { | 
						|
    return cachedConfig | 
						|
  } else if (cachedConfig === false) { | 
						|
    return | 
						|
  } else { | 
						|
    let babelConfig | 
						|
 | 
						|
    if (vueJestConfig.babelRcFile) { | 
						|
      deprecate.replace('babelRcFile', 'babelConfig') | 
						|
      babelConfig = JSON.parse(readFileSync(vueJestConfig.babelRcFile)) | 
						|
    } else if (vueJestConfig.hasOwnProperty('babelConfig')) { | 
						|
      switch (typeof vueJestConfig.babelConfig) { | 
						|
        case 'string': | 
						|
          // a path to a config file is being passed in; load it | 
						|
          babelConfig = require(vueJestConfig.babelConfig) | 
						|
          break | 
						|
        case 'boolean': | 
						|
          // if babelConfig is true, search for it. If false, will end up | 
						|
          // returning undefined which results in no babel processing | 
						|
          if (vueJestConfig.babelConfig === true) { | 
						|
            babelConfig = find() | 
						|
          } | 
						|
          break | 
						|
        case 'object': | 
						|
        default: | 
						|
          // support for inline babel options | 
						|
          babelConfig = vueJestConfig.babelConfig | 
						|
          break | 
						|
      } | 
						|
    } else if (existsSync('babel.config.js')) { | 
						|
      babelConfig = require(path.resolve('babel.config.js')) | 
						|
    } else { | 
						|
      babelConfig = find() | 
						|
    } | 
						|
 | 
						|
    if (babelConfig) { | 
						|
      cache.set('babel-config', babelConfig) | 
						|
    } | 
						|
 | 
						|
    return babelConfig | 
						|
  } | 
						|
}
 | 
						|
 |