提交 3f9211c2 编写于 作者: fxy060608's avatar fxy060608

wip(uts): components

上级 0ab8f9b8
......@@ -425,6 +425,16 @@ function initAutoComponents () {
function initAutoImportScanComponents () {
const components = initAutoComponents()
const {
initUTSComponents
} = require('./uts/uts.js')
initUTSComponents(process.env.UNI_INPUT_DIR, process.env.UNI_PLATFORM).forEach((item) => {
components[item.pattern.source] = item.replacement.replace('\0', '').replace('?uts-proxy',
'/package.json?uts-proxy')
})
if (process.env.UNI_PLATFORM === 'quickapp-native') {
if (!uniQuickAppAutoImportScanComponents) {
uniQuickAppAutoImportScanComponents = getAutoComponentsByDir(
......@@ -463,8 +473,7 @@ function initAutoImportComponents (easycom = {}) {
}
initBuiltInEasycom(BUILT_IN_EASYCOMS, usingAutoImportComponents)
// 目前仅 mp-weixin 内置支持 page-meta 等组件
if (process.env.UNI_PLATFORM === 'mp-weixin') {
} else if (process.env.UNI_PLATFORM === 'mp-alipay') {
if (process.env.UNI_PLATFORM === 'mp-weixin') {} else if (process.env.UNI_PLATFORM === 'mp-alipay') {
initBuiltInEasycom(BUILT_IN_COMPONENTS_ALIPAY, usingAutoImportComponents)
} else {
initBuiltInEasycom(BUILT_IN_COMPONENTS, usingAutoImportComponents)
......
......@@ -3,9 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveUTSCompiler = exports.resolveUtsModule = exports.resolveUtsAppModule = void 0;
exports.initUTSComponents = exports.resolveUTSCompiler = exports.resolveUtsModule = exports.resolveUtsAppModule = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const fast_glob_1 = __importDefault(require("fast-glob"));
const hbx_1 = require("./hbx");
const utils_1 = require("./utils");
/**
......@@ -99,3 +100,65 @@ function resolveUTSCompiler() {
return require(compilerPath);
}
exports.resolveUTSCompiler = resolveUTSCompiler;
function initUTSComponents(inputDir, platform) {
const components = [];
if (platform !== 'app' && platform !== 'app-plus') {
return components;
}
const easycomsObj = Object.create(null);
const dirs = resolveUTSComponentDirs(inputDir);
dirs.forEach((dir) => {
const is_uni_modules_utssdk = dir.endsWith('utssdk');
const is_ussdk = !is_uni_modules_utssdk && path_1.default.dirname(dir).endsWith('utssdk');
if (is_uni_modules_utssdk || is_ussdk) {
fast_glob_1.default
.sync('**/*.vue', {
cwd: dir,
absolute: true,
})
.forEach((file) => {
let name = parseVueComponentName(file);
if (!name) {
if (file.endsWith('index.vue')) {
name = path_1.default.basename(is_uni_modules_utssdk ? path_1.default.dirname(dir) : dir);
}
}
if (name) {
const importDir = (0, utils_1.normalizePath)(is_uni_modules_utssdk ? path_1.default.dirname(dir) : dir);
easycomsObj[`^${name}$`] = `\0${importDir}?uts-proxy`;
}
});
}
});
Object.keys(easycomsObj).forEach((name) => {
components.push({
pattern: new RegExp(name),
replacement: easycomsObj[name],
});
});
return components;
}
exports.initUTSComponents = initUTSComponents;
function resolveUTSComponentDirs(inputDir) {
const utssdkDir = path_1.default.resolve(inputDir, 'utssdk');
const uniModulesDir = path_1.default.resolve(inputDir, 'uni_modules');
return fast_glob_1.default
.sync('*', {
cwd: utssdkDir,
absolute: true,
onlyDirectories: true,
})
.concat(fast_glob_1.default.sync('*/utssdk', {
cwd: uniModulesDir,
absolute: true,
onlyDirectories: true,
}));
}
const nameRE = /name\s*:\s*['|"](.*)['|"]/;
function parseVueComponentName(file) {
const content = fs_1.default.readFileSync(file, 'utf8');
const matches = content.match(nameRE);
if (matches) {
return matches[1];
}
}
......@@ -19,7 +19,8 @@
"author": "fxy060608",
"license": "Apache-2.0",
"dependencies": {
"escape-string-regexp": "^4.0.0",
"escape-string-regexp": "^4.0.0",
"fast-glob": "^3.2.11",
"glob-escape": "^0.0.2",
"hash-sum": "^1.0.2",
"postcss-urlrewrite": "^0.2.2",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册