1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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
- }
- }
|