124 lines
5.9 KiB
JavaScript
124 lines
5.9 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.createUniAppJsEnginePlugin = exports.initUniAppJsEngineCssPlugin = 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");
|
|
const css_1 = require("./css");
|
|
function initUniAppJsEngineCssPlugin(config) {
|
|
(0, uni_cli_shared_1.injectCssPlugin)(config, process.env.UNI_COMPILE_TARGET === 'uni_modules'
|
|
? {
|
|
createUrlReplacer: uni_cli_shared_1.createEncryptCssUrlReplacer,
|
|
}
|
|
: {});
|
|
(0, uni_cli_shared_1.injectCssPostPlugin)(config, (0, css_1.uniAppCssPlugin)(config));
|
|
}
|
|
exports.initUniAppJsEngineCssPlugin = initUniAppJsEngineCssPlugin;
|
|
function createUniAppJsEnginePlugin(platform) {
|
|
return function uniAppJsEnginePlugin() {
|
|
const inputDir = process.env.UNI_INPUT_DIR;
|
|
const outputDir = process.env.UNI_OUTPUT_DIR;
|
|
const uvueOutputDir = (0, uni_cli_shared_1.uvueOutDir)(platform);
|
|
const tscOutputDir = (0, uni_cli_shared_1.tscOutDir)(platform);
|
|
// 开始编译时,清空输出目录
|
|
function emptyOutDir() {
|
|
// ext-api 编译时,需要同时编译多个平台,并保留多个平台的输出目录
|
|
if (process.env.UNI_COMPILE_TARGET === 'ext-api') {
|
|
return;
|
|
}
|
|
if (fs_extra_1.default.existsSync(outputDir)) {
|
|
(0, uni_cli_shared_1.emptyDir)(outputDir);
|
|
}
|
|
}
|
|
emptyOutDir();
|
|
function emptyUVueDir() {
|
|
if (fs_extra_1.default.existsSync(uvueOutputDir)) {
|
|
(0, uni_cli_shared_1.emptyDir)(uvueOutputDir);
|
|
}
|
|
}
|
|
emptyUVueDir();
|
|
function emptyTscDir() {
|
|
if (fs_extra_1.default.existsSync(tscOutputDir)) {
|
|
(0, uni_cli_shared_1.emptyDir)(tscOutputDir);
|
|
}
|
|
}
|
|
emptyTscDir();
|
|
return {
|
|
name: 'uni:app-uts',
|
|
apply: 'build',
|
|
uni: (0, utils_1.createUniOptions)(platform),
|
|
config() {
|
|
return {
|
|
base: '/', // 强制 base
|
|
build: {
|
|
sourcemap: (0, uni_cli_shared_1.enableSourceMap)(), //enableSourceMap() ? 'hidden' : false,
|
|
emptyOutDir: false,
|
|
assetsInlineLimit: 0,
|
|
target: process.env.UNI_UTS_PLATFORM === 'app-ios'
|
|
? [
|
|
'ios12',
|
|
'es2020',
|
|
'edge88',
|
|
'firefox78',
|
|
'chrome87',
|
|
'safari14',
|
|
]
|
|
: process.env.UNI_UTS_PLATFORM === 'app-harmony'
|
|
? ['es2022']
|
|
: undefined,
|
|
rollupOptions: {
|
|
input: (0, uni_cli_shared_1.resolveMainPathOnce)(inputDir),
|
|
external: ['vue', '@vue/shared'],
|
|
output: {
|
|
name: 'AppService',
|
|
banner: ``,
|
|
format: 'iife',
|
|
entryFileNames: uni_cli_shared_1.APP_SERVICE_FILENAME,
|
|
globals: {
|
|
vue: 'Vue',
|
|
'@vue/shared': 'uni.VueShared',
|
|
},
|
|
sourcemapPathTransform: (relativeSourcePath, sourcemapPath) => {
|
|
return (0, uni_cli_shared_1.normalizePath)(path_1.default.relative(process.env.UNI_INPUT_DIR, path_1.default.resolve(path_1.default.dirname(sourcemapPath), relativeSourcePath)));
|
|
},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
},
|
|
configResolved(config) {
|
|
(0, utils_1.configResolved)(config);
|
|
initUniAppJsEngineCssPlugin(config);
|
|
},
|
|
generateBundle(_, bundle) {
|
|
const APP_SERVICE_FILENAME_MAP = uni_cli_shared_1.APP_SERVICE_FILENAME + '.map';
|
|
const appServiceMap = bundle[APP_SERVICE_FILENAME_MAP];
|
|
if (appServiceMap && appServiceMap.type === 'asset') {
|
|
const source = JSON.parse(appServiceMap.source);
|
|
source.sourceRoot = (0, uni_cli_shared_1.normalizePath)(inputDir);
|
|
const newSourceMapFileName = path_1.default.resolve(process.env.UNI_APP_X_CACHE_DIR, 'sourcemap', APP_SERVICE_FILENAME_MAP);
|
|
fs_extra_1.default.outputFileSync(newSourceMapFileName, JSON.stringify(source));
|
|
delete bundle[APP_SERVICE_FILENAME_MAP];
|
|
const appService = bundle[uni_cli_shared_1.APP_SERVICE_FILENAME];
|
|
if (appService && appService.type === 'chunk') {
|
|
appService.code = appService.code.replace(`//# sourceMappingURL=app-service.js.map`, `//# sourceMappingURL=` +
|
|
path_1.default.relative(process.env.UNI_OUTPUT_DIR, newSourceMapFileName));
|
|
}
|
|
}
|
|
},
|
|
async writeBundle() {
|
|
// x 上暂时编译所有uni ext api,不管代码里是否调用了
|
|
// 框架内部编译时,不需要
|
|
if (process.env.UNI_COMPILE_TARGET !== 'ext-api') {
|
|
await (0, uni_cli_shared_1.buildUniExtApis)();
|
|
}
|
|
},
|
|
};
|
|
};
|
|
}
|
|
exports.createUniAppJsEnginePlugin = createUniAppJsEnginePlugin;
|