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.
parttimejob/node_modules/@vue/vue-loader-v15/lib/compiler.js

55 lines
1.3 KiB

4 weeks ago
// resolve compilers to use.
let cached
exports.resolveCompiler = function (ctx, loaderContext) {
if (cached) {
return cached
}
// check 2.7
try {
const pkg = loadFromContext('vue/package.json', ctx)
const [major, minor] = pkg.version.split('.')
if (major === '2' && Number(minor) >= 7) {
return (cached = {
is27: true,
compiler: loadFromContext('vue/compiler-sfc', ctx),
templateCompiler: undefined
})
}
} catch (e) {}
return (cached = {
compiler: require('@vue/component-compiler-utils'),
templateCompiler: loadTemplateCompiler(ctx, loaderContext)
})
}
function loadFromContext(path, ctx) {
return require(require.resolve(path, {
paths: [ctx]
}))
}
function loadTemplateCompiler(ctx, loaderContext) {
try {
return loadFromContext('vue-template-compiler', ctx)
} catch (e) {
if (loaderContext) {
if (/version mismatch/.test(e.toString())) {
loaderContext.emitError(e)
} else {
loaderContext.emitError(
new Error(
`[vue-loader] vue-template-compiler must be installed as a peer dependency, ` +
`or a compatible compiler implementation must be passed via options.`
)
)
}
} else {
throw e
}
}
}