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
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;
|
|
|