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.

69 lines
3.0 KiB

2 months ago
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createResolve = exports.customResolver = void 0;
const path_1 = __importDefault(require("path"));
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
function resolveUTSModuleProxyFile(id, importer) {
const file = (0, uni_cli_shared_1.resolveUTSAppModule)(process.env.UNI_UTS_PLATFORM, id, importer);
if (file) {
// app-js 会返回完整路径,不需要 uts-proxy
if (file.endsWith('.uts')) {
return file;
}
return file + '?uts-proxy';
}
}
const customResolver = (updatedId, importer) => {
updatedId = updatedId.split('?')[0];
const utsImporter = importer
? path_1.default.dirname(importer)
: process.env.UNI_INPUT_DIR;
const utsModuleFile = process.env.UNI_PLATFORM === 'app' ||
process.env.UNI_PLATFORM === 'app-harmony'
? resolveUTSModuleProxyFile(updatedId, utsImporter)
: (0, uni_cli_shared_1.resolveUTSModule)(updatedId, utsImporter);
if (utsModuleFile) {
return uni_cli_shared_1.isWindows ? (0, uni_cli_shared_1.normalizePath)(utsModuleFile) : utsModuleFile;
}
const resolveId = (0, uni_cli_shared_1.resolveEncryptUniModule)((0, uni_cli_shared_1.normalizePath)(updatedId), process.env.UNI_UTS_PLATFORM, process.env.UNI_APP_X === 'true');
if (resolveId) {
return resolveId;
}
if (uni_cli_shared_1.isWindows) {
return (0, uni_cli_shared_1.normalizePath)((0, uni_cli_shared_1.requireResolve)(updatedId, importer || process.env.UNI_INPUT_DIR));
}
return (0, uni_cli_shared_1.requireResolve)(updatedId, importer || process.env.UNI_INPUT_DIR);
};
exports.customResolver = customResolver;
function createResolve(options, _config) {
const alias = [];
if ((0, uni_cli_shared_1.isNormalCompileTarget)()) {
// 加密组件内部使用的 vue export helper需要重新映射回来
alias.push({
find: 'plugin-vue:export-helper',
replacement: '\0plugin-vue:export-helper',
});
}
return {
// 必须使用alias解析插件定制的resolveId不会被应用到css等预处理器中
alias: [
// because @rollup/plugin-alias' type doesn't allow function
// replacement, but its implementation does work with function values.
{
find: /^(~@|@)\/(.*)/,
replacement(_str, _$1, $2) {
return (0, uni_cli_shared_1.normalizePath)(path_1.default.resolve(options.inputDir, $2));
},
customResolver: exports.customResolver,
},
...alias,
],
extensions: process.env.UNI_APP_X === 'true' ? uni_cli_shared_1.uni_app_x_extensions : uni_cli_shared_1.extensions,
preserveSymlinks: true,
};
}
exports.createResolve = createResolve;