95 lines
3.8 KiB
JavaScript
95 lines
3.8 KiB
JavaScript
"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;
|