更新
This commit is contained in:
+89
@@ -0,0 +1,89 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.uniAppManifestPlugin = exports.getOutputManifestJson = void 0;
|
||||
const path_1 = __importDefault(require("path"));
|
||||
const fs_extra_1 = __importDefault(require("fs-extra"));
|
||||
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
|
||||
const utils_1 = require("../utils");
|
||||
let outputManifestJson = undefined;
|
||||
const isXHarmony = process.env.UNI_APP_X === 'true' &&
|
||||
process.env.UNI_UTS_PLATFORM === 'app-harmony';
|
||||
function getOutputManifestJson() {
|
||||
return outputManifestJson;
|
||||
}
|
||||
exports.getOutputManifestJson = getOutputManifestJson;
|
||||
function uniAppManifestPlugin() {
|
||||
const manifestJsonPath = path_1.default.resolve(process.env.UNI_INPUT_DIR, 'manifest.json');
|
||||
const manifestJsonUTSPath = path_1.default.resolve(process.env.UNI_INPUT_DIR, uni_cli_shared_1.MANIFEST_JSON_UTS);
|
||||
let manifestJson = {};
|
||||
return {
|
||||
name: 'uni:app-manifest',
|
||||
apply: 'build',
|
||||
resolveId(id) {
|
||||
if ((0, utils_1.isManifest)(id)) {
|
||||
return manifestJsonUTSPath;
|
||||
}
|
||||
},
|
||||
load(id) {
|
||||
if ((0, utils_1.isManifest)(id)) {
|
||||
return fs_extra_1.default.readFileSync(manifestJsonPath, 'utf8');
|
||||
}
|
||||
},
|
||||
transform(code, id) {
|
||||
if ((0, utils_1.isManifest)(id)) {
|
||||
this.addWatchFile(path_1.default.resolve(process.env.UNI_INPUT_DIR, 'manifest.json'));
|
||||
manifestJson = (0, uni_cli_shared_1.parseJson)(code, false, id);
|
||||
return {
|
||||
code: `export default ${JSON.stringify(manifestJson)}`,
|
||||
map: {
|
||||
mappings: '',
|
||||
},
|
||||
};
|
||||
}
|
||||
},
|
||||
buildEnd() {
|
||||
outputManifestJson = (0, utils_1.normalizeManifestJson)(manifestJson);
|
||||
const manifest = outputManifestJson;
|
||||
if (process.env.NODE_ENV !== 'development' || isXHarmony) {
|
||||
// 生产模式,记录使用到的modules
|
||||
const ids = Array.from(this.getModuleIds());
|
||||
const uniExtApis = new Set();
|
||||
ids.forEach((id) => {
|
||||
const moduleInfo = this.getModuleInfo(id);
|
||||
if (moduleInfo &&
|
||||
moduleInfo.meta &&
|
||||
Array.isArray(moduleInfo.meta.uniExtApis)) {
|
||||
moduleInfo.meta.uniExtApis.forEach((api) => {
|
||||
uniExtApis.add(api);
|
||||
});
|
||||
}
|
||||
});
|
||||
const { parseInjectModules, getPluginInjectApis, getPluginInjectComponents, } = (0, uni_cli_shared_1.resolveUTSCompiler)();
|
||||
const extApiComponents = (0, utils_1.getExtApiComponents)();
|
||||
// uts 插件里使用的 ext api 和组件
|
||||
const pluginInjectApis = getPluginInjectApis();
|
||||
const pluginInjectComponents = getPluginInjectComponents();
|
||||
if (uniExtApis.size ||
|
||||
extApiComponents.size ||
|
||||
pluginInjectApis.length ||
|
||||
pluginInjectComponents.length) {
|
||||
const modules = parseInjectModules([...uniExtApis, ...pluginInjectApis], {}, [...extApiComponents, ...pluginInjectComponents]);
|
||||
if (modules.length) {
|
||||
// 执行了摇树逻辑,就需要设置 modules 节点
|
||||
if (isXHarmony) {
|
||||
(0, utils_1.updateHarmonyManifestModules)(manifest, modules);
|
||||
}
|
||||
else {
|
||||
(0, utils_1.updateManifestModules)(manifest, modules);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fs_extra_1.default.outputFileSync(path_1.default.resolve(process.env.UNI_OUTPUT_DIR, 'manifest.json'), JSON.stringify(manifest, null, 2));
|
||||
},
|
||||
};
|
||||
}
|
||||
exports.uniAppManifestPlugin = uniAppManifestPlugin;
|
||||
Reference in New Issue
Block a user