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.
38 lines
865 B
38 lines
865 B
const fs = require('fs') |
|
const path = require('path') |
|
|
|
const isFileEsm = require('is-file-esm') |
|
const { loadModule } = require('@vue/cli-shared-utils') |
|
|
|
module.exports = function loadFileConfig (context) { |
|
let fileConfig, fileConfigPath |
|
|
|
const possibleConfigPaths = [ |
|
process.env.VUE_CLI_SERVICE_CONFIG_PATH, |
|
'./vue.config.js', |
|
'./vue.config.cjs', |
|
'./vue.config.mjs' |
|
] |
|
for (const p of possibleConfigPaths) { |
|
const resolvedPath = p && path.resolve(context, p) |
|
if (resolvedPath && fs.existsSync(resolvedPath)) { |
|
fileConfigPath = resolvedPath |
|
break |
|
} |
|
} |
|
|
|
if (fileConfigPath) { |
|
const { esm } = isFileEsm.sync(fileConfigPath) |
|
|
|
if (esm) { |
|
fileConfig = import(fileConfigPath) |
|
} else { |
|
fileConfig = loadModule(fileConfigPath, context) |
|
} |
|
} |
|
|
|
return { |
|
fileConfig, |
|
fileConfigPath |
|
} |
|
}
|
|
|