uni-ticket-system/node_modules/@dcloudio/vite-plugin-uni/dist/cli/uvue.js
2023-12-05 10:11:10 +08:00

95 lines
3.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildUVue = exports.runUVueBuild = exports.runUVueDev = exports.initUVueEnv = void 0;
const vite_1 = require("vite");
const shared_1 = require("@vue/shared");
const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
const build_1 = require("./build");
const utils_1 = require("./utils");
const easycom_1 = require("../utils/easycom");
function initUVueEnv() {
// 直接指定了
if (process.env.UNI_APP_X === 'false') {
return;
}
const manifestJson = (0, uni_cli_shared_1.parseManifestJsonOnce)(process.env.UNI_INPUT_DIR);
const isNVueEnabled = (0, shared_1.hasOwn)(manifestJson, 'uni-app-x');
if (!isNVueEnabled) {
return;
}
process.env.UNI_APP_X = 'true';
}
exports.initUVueEnv = initUVueEnv;
async function runUVueDev(options) {
if (options.platform !== 'app') {
(0, uni_cli_shared_1.output)('error', uni_cli_shared_1.M['uvue.unsupported'].replace('{platform}', options.platform));
return process.exit(0);
}
(0, easycom_1.initEasycom)();
const watcher = (await buildUVue(options));
let isFirstStart = true;
let isFirstEnd = true;
watcher.on('event', (event) => {
if (event.code === 'BUNDLE_START') {
if (isFirstStart) {
isFirstStart = false;
return;
}
(0, uni_cli_shared_1.output)('log', uni_cli_shared_1.M['dev.watching.start']);
// 重置一下uts编译报错会导致下一次开始差量编译紧接着上一次的差量编译导致无法正常输出
(0, uni_cli_shared_1.resetOutput)('log');
}
else if (event.code === 'BUNDLE_END') {
event.result.close();
const dex = process.env.UNI_APP_UTS_CHANGED_FILES;
process.env.UNI_APP_UTS_CHANGED_FILES = '';
if (isFirstEnd) {
// 首次全量同步
isFirstEnd = false;
(0, uni_cli_shared_1.output)('log', uni_cli_shared_1.M['dev.watching.end']);
(0, utils_1.printStartupDuration)((0, vite_1.createLogger)(options.logLevel), false);
return;
}
if (dex) {
const files = JSON.parse(dex);
if (!files.length) {
// 本次无变动
return (0, uni_cli_shared_1.output)('log', uni_cli_shared_1.M['uvue.dev.watching.end.empty']);
}
return (0, uni_cli_shared_1.output)('log', uni_cli_shared_1.M['dev.watching.end.files'].replace('{files}', JSON.stringify(files)));
}
return (0, uni_cli_shared_1.output)('log', uni_cli_shared_1.M['dev.watching.end']);
}
});
}
exports.runUVueDev = runUVueDev;
async function runUVueBuild(options) {
try {
(0, uni_cli_shared_1.initEasycomsOnce)(process.env.UNI_INPUT_DIR, {
dirs: [(0, uni_cli_shared_1.resolveComponentsLibPath)()],
platform: process.env.UNI_PLATFORM,
isX: true,
});
await buildUVue(options);
console.log(uni_cli_shared_1.M['build.done']);
}
catch (e) {
console.error(`Build failed with errors.`);
process.exit(1);
}
}
exports.runUVueBuild = runUVueBuild;
/**
* 目前的简易实现逻辑
* node层
* 1. 监听项目,生成资源到临时目录 .uts/android, .uts/ios
* 2. uvue 文件,做解析,拆分生成 render.kt, css.kt, uts.uvue
* 3. static 文件copy 到最终目录
* 4. uvue、vue、uts 文件发生变化,调用 uts 编译器
* @param options
*/
async function buildUVue(options) {
return (0, build_1.buildByVite)((0, utils_1.addConfigFile)((0, shared_1.extend)({ nvueAppService: true, nvue: true }, (0, build_1.initBuildOptions)(options, (0, utils_1.cleanOptions)(options)))));
}
exports.buildUVue = buildUVue;