mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-08 09:27:19 +08:00
86 lines
3.6 KiB
JavaScript
86 lines
3.6 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.resolveCompiler = exports.resolveVue = void 0;
|
|
const path_1 = __importDefault(require("path"));
|
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
const pathUtils_1 = require("./pathUtils");
|
|
const chalk_1 = __importDefault(require("chalk"));
|
|
const fsUtils_1 = require("./fsUtils");
|
|
let resolved = undefined;
|
|
// Resolve the correct `vue` and `@vue.compiler-sfc` to use.
|
|
// If the user project has local installations of these, they should be used;
|
|
// otherwise, fallback to the dependency of Vite itself.
|
|
function resolveVue(root) {
|
|
if (resolved) {
|
|
return resolved;
|
|
}
|
|
let vueVersion;
|
|
let vueBasePath;
|
|
let compilerPath;
|
|
const projectPkg = JSON.parse(fsUtils_1.lookupFile(root, ['package.json']) || `{}`);
|
|
let isLocal = !!(projectPkg.dependencies && projectPkg.dependencies.vue);
|
|
if (isLocal) {
|
|
try {
|
|
const userVuePkg = pathUtils_1.resolveFrom(root, 'vue/package.json');
|
|
vueBasePath = path_1.default.dirname(userVuePkg);
|
|
vueVersion = fs_extra_1.default.readJSONSync(userVuePkg).version;
|
|
isLocal = true;
|
|
}
|
|
catch (e) {
|
|
// user has vue listed but not actually installed.
|
|
isLocal = false;
|
|
}
|
|
}
|
|
if (isLocal) {
|
|
// user has local vue, verify that the same version of @vue/compiler-sfc
|
|
// is also installed.
|
|
try {
|
|
const compilerPkgPath = pathUtils_1.resolveFrom(root, '@vue/compiler-sfc/package.json');
|
|
const compilerPkg = require(compilerPkgPath);
|
|
if (compilerPkg.version !== vueVersion) {
|
|
throw new Error();
|
|
}
|
|
compilerPath = path_1.default.join(path_1.default.dirname(compilerPkgPath), compilerPkg.main);
|
|
}
|
|
catch (e) {
|
|
// user has local vue but has no compiler-sfc
|
|
console.error(chalk_1.default.red(`[vite] Error: a local installation of \`vue\` is detected but ` +
|
|
`no matching \`@vue/compiler-sfc\` is found. Make sure to install ` +
|
|
`both and use the same version.`));
|
|
compilerPath = require.resolve('@vue/compiler-sfc');
|
|
}
|
|
}
|
|
else {
|
|
// user has no local vue, use vite's dependency version
|
|
vueVersion = require('vue/package.json').version;
|
|
vueBasePath = path_1.default.dirname(require.resolve('vue/package.json'));
|
|
compilerPath = require.resolve('@vue/compiler-sfc');
|
|
}
|
|
const resolvePath = (name, from) => pathUtils_1.resolveFrom(from, `@vue/${name}/dist/${name}.esm-bundler.js`);
|
|
// resolve nested dependencies with correct base dirs so that this works with
|
|
// strict package managers - e.g. pnpm / yarn 2
|
|
const runtimeDomPath = resolvePath('runtime-dom', vueBasePath);
|
|
const runtimeCorePath = resolvePath('runtime-core', runtimeDomPath);
|
|
const reactivityPath = resolvePath('reactivity', runtimeCorePath);
|
|
const sharedPath = resolvePath('shared', runtimeCorePath);
|
|
resolved = {
|
|
version: vueVersion,
|
|
vue: runtimeDomPath,
|
|
'@vue/runtime-dom': runtimeDomPath,
|
|
'@vue/runtime-core': runtimeCorePath,
|
|
'@vue/reactivity': reactivityPath,
|
|
'@vue/shared': sharedPath,
|
|
compiler: compilerPath,
|
|
isLocal
|
|
};
|
|
return resolved;
|
|
}
|
|
exports.resolveVue = resolveVue;
|
|
function resolveCompiler(cwd) {
|
|
return require(resolveVue(cwd).compiler);
|
|
}
|
|
exports.resolveCompiler = resolveCompiler;
|
|
//# sourceMappingURL=resolveVue.js.map
|