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.
 
 
 
 
 

95 lines
4.2 KiB

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.uniManifestJsonPlugin = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const shared_1 = require("@vue/shared");
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
function findUserProjectConfigFile(inputDir, config) {
for (let i = 0; i < config.length; i++) {
const projectFilename = path_1.default.resolve(inputDir, config[i]);
// 根目录包含指定文件,则直接拷贝
if (fs_1.default.existsSync(projectFilename)) {
return projectFilename;
}
}
}
function uniManifestJsonPlugin(options) {
return (0, uni_cli_shared_1.defineUniManifestJsonPlugin)((opts) => {
const inputDir = process.env.UNI_INPUT_DIR;
const platform = process.env.UNI_PLATFORM;
let projectJson;
let userProjectFilename;
let projectSource;
if (options.project) {
userProjectFilename = findUserProjectConfigFile(inputDir, options.project.config);
}
return {
name: 'uni:mp-manifest-json',
enforce: 'pre',
transform(code, id) {
if (!opts.filter(id)) {
return;
}
this.addWatchFile(path_1.default.resolve(inputDir, 'manifest.json'));
(0, uni_cli_shared_1.getLocaleFiles)(path_1.default.resolve(inputDir, 'locale')).forEach((filepath) => {
this.addWatchFile(filepath);
});
if (options.project) {
// 根目录包含指定文件,则直接拷贝
if (userProjectFilename) {
this.addWatchFile(userProjectFilename);
projectJson = (0, uni_cli_shared_1.parseJson)(fs_1.default.readFileSync(userProjectFilename, 'utf8'));
}
else {
const template = options.project.source;
if ((0, shared_1.hasOwn)(template, 'appid')) {
let projectName = path_1.default.basename(inputDir);
if (projectName === 'src') {
projectName = path_1.default.basename(path_1.default.dirname(inputDir));
}
template.projectname = projectName;
// TODO condition
if (process.env.UNI_AUTOMATOR_WS_ENDPOINT) {
if (!template.setting) {
template.setting = {};
}
template.setting.urlCheck = false;
}
projectJson = (0, uni_cli_shared_1.parseMiniProgramProjectJson)(code, platform, {
template,
pagesJson: (0, uni_cli_shared_1.parsePagesJsonOnce)(inputDir, platform),
});
}
else {
// 无需解析,直接拷贝,如 quickapp-webview
projectJson = template;
}
}
}
return {
code: '',
map: { mappings: '' },
};
},
generateBundle() {
if (projectJson && options.project) {
const { filename, normalize } = options.project;
const source = JSON.stringify(normalize ? normalize(projectJson) : projectJson, null, 2);
if (projectSource !== source) {
projectSource = source;
this.emitFile({
fileName: filename,
type: 'asset',
source,
});
}
}
},
};
});
}
exports.uniManifestJsonPlugin = uniManifestJsonPlugin;