354 lines
9.7 KiB
JavaScript
354 lines
9.7 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.initAutoImportOptions = void 0;
|
||
const path_1 = __importDefault(require("path"));
|
||
const uni_shared_1 = require("@dcloudio/uni-shared");
|
||
const uts_1 = require("../uts");
|
||
const workers_1 = require("../workers");
|
||
const utils_1 = require("../utils");
|
||
const x_1 = require("../x");
|
||
const uniWebLifeCyclePreset = {
|
||
from: '@dcloudio/uni-app',
|
||
imports: [
|
||
// ssr
|
||
'ssrRef',
|
||
'shallowSsrRef',
|
||
// uni-app lifecycle
|
||
// App and Page
|
||
'onShow',
|
||
'onHide',
|
||
// App
|
||
'onLaunch',
|
||
// web平台如下生命周期和uni.xxx api冲突,发行时改为通过uni-h5导入api实现,运行时通过uni-app导入
|
||
// 'onAppShow',
|
||
// 'onAppHide',
|
||
// 'onError',
|
||
// 'onPageNotFound',
|
||
// 'onUnhandledRejection',
|
||
'onThemeChange',
|
||
'onKeyboardHeightChange',
|
||
'onLastPageBackPress',
|
||
'onExit',
|
||
// Page
|
||
'onPageShow',
|
||
'onPageHide',
|
||
'onLoad',
|
||
'onReady',
|
||
'onUnload',
|
||
'onResize',
|
||
'onBackPress',
|
||
'onPageScroll',
|
||
'onTabItemTap',
|
||
'onReachBottom',
|
||
'onPullDownRefresh',
|
||
// 其他
|
||
'onShareTimeline',
|
||
'onShareAppMessage',
|
||
'onShareChat', // xhs-share
|
||
'onCopyUrl',
|
||
'onUploadDouyinVideo',
|
||
'onLiveMount',
|
||
'onTitleClick',
|
||
// 辅助
|
||
'renderComponentSlot',
|
||
],
|
||
};
|
||
const uniLifeCyclePreset = {
|
||
from: '@dcloudio/uni-app',
|
||
imports: [
|
||
// ssr
|
||
'ssrRef',
|
||
'shallowSsrRef',
|
||
// uni-app lifecycle
|
||
// App and Page
|
||
'onShow',
|
||
'onHide',
|
||
// App
|
||
'onLaunch',
|
||
'onAppShow',
|
||
'onAppHide',
|
||
'onError',
|
||
'onThemeChange',
|
||
'onKeyboardHeightChange',
|
||
'onPageNotFound',
|
||
'onUnhandledRejection',
|
||
'onLastPageBackPress',
|
||
'onExit',
|
||
// Page
|
||
'onPageShow',
|
||
'onPageHide',
|
||
'onLoad',
|
||
'onReady',
|
||
'onUnload',
|
||
'onResize',
|
||
'onBackPress',
|
||
'onPageScroll',
|
||
'onTabItemTap',
|
||
'onReachBottom',
|
||
'onPullDownRefresh',
|
||
// 其他
|
||
'onShareTimeline',
|
||
'onShareAppMessage',
|
||
'onShareChat', // xhs-share
|
||
'onCopyUrl',
|
||
'onUploadDouyinVideo',
|
||
'onLiveMount',
|
||
'onTitleClick',
|
||
// 辅助
|
||
'renderComponentSlot',
|
||
],
|
||
};
|
||
const uniH5Preset = {
|
||
from: '@dcloudio/uni-h5',
|
||
imports: [
|
||
'UniElement',
|
||
'UniElementImpl',
|
||
'UniButtonElement',
|
||
'UniCanvasElement',
|
||
'UniCheckboxElement',
|
||
'UniCheckboxGroupElement',
|
||
'UniEditorElement',
|
||
'UniFormElement',
|
||
'UniIconElement',
|
||
'UniImageElement',
|
||
'UniInputElement',
|
||
'UniLabelElement',
|
||
'UniMovableAreaElement',
|
||
'UniMovableViewElement',
|
||
'UniNavigatorElement',
|
||
'UniPickerViewElement',
|
||
'UniPickerViewColumnElement',
|
||
'UniProgressElement',
|
||
'UniRadioElement',
|
||
'UniRadioGroupElement',
|
||
'UniRichTextElement',
|
||
'UniScrollViewElement',
|
||
'UniSliderElement',
|
||
'UniSwiperElement',
|
||
'UniSwiperItemElement',
|
||
'UniSwitchElement',
|
||
'UniTextElement',
|
||
'UniTextareaElement',
|
||
'UniViewElement',
|
||
'UniViewElementImpl',
|
||
'UniListViewElement',
|
||
'UniListItemElement',
|
||
'UniStickySectionElement',
|
||
'UniStickyHeaderElement',
|
||
'UniVideoElement',
|
||
'UniWebViewElement',
|
||
'UniMapElement',
|
||
'UniCoverViewElement',
|
||
'UniCoverImageElement',
|
||
'UniPickerElement',
|
||
],
|
||
};
|
||
if (process.env.NODE_ENV === 'development') {
|
||
uniWebLifeCyclePreset.imports.push(
|
||
// web平台如下生命周期和uni.xxx api冲突,发行时改为通过uni-h5导入api实现,运行时通过uni-app导入
|
||
'onAppShow', 'onAppHide', 'onError', 'onPageNotFound', 'onUnhandledRejection');
|
||
}
|
||
else {
|
||
uniH5Preset.imports.push('onAppShow', 'onAppHide', 'onError', 'onPageNotFound', 'onUnhandledRejection');
|
||
}
|
||
const uniMiniProgramPreset = {
|
||
from: 'vue',
|
||
imports: ['UniElement', 'UniElementImpl'],
|
||
};
|
||
const cloudPreset = {
|
||
from: '@dcloudio/uni-cloud',
|
||
imports: ['uniCloud', 'UniCloudError'],
|
||
};
|
||
const utsJsPreset = {
|
||
from: '@dcloudio/uni-shared',
|
||
imports: ['UTS', 'UTSJSONObject', 'UTSValueIterable', 'UniError'],
|
||
};
|
||
const uniAppLifeCyclePreset = {
|
||
from: 'vue',
|
||
imports: [
|
||
// ssr
|
||
'ssrRef',
|
||
'shallowSsrRef',
|
||
// uni-app lifecycle
|
||
// App and Page
|
||
'onShow',
|
||
'onHide',
|
||
// App
|
||
'onAppShow',
|
||
'onAppHide',
|
||
'onLaunch',
|
||
'onError',
|
||
'onThemeChange',
|
||
'onLastPageBackPress',
|
||
// onKeyboardHeightChange,
|
||
'onPageNotFound',
|
||
'onUnhandledRejection',
|
||
'onExit',
|
||
// Page
|
||
'onPageShow',
|
||
'onPageHide',
|
||
'onLoad',
|
||
'onReady',
|
||
'onUnload',
|
||
'onResize',
|
||
'onBackPress',
|
||
'onPageScroll',
|
||
'onTabItemTap',
|
||
'onReachBottom',
|
||
'onPullDownRefresh',
|
||
// 其他
|
||
'onShareTimeline',
|
||
'onShareAppMessage',
|
||
// onShareChat, // xhs-share
|
||
// 辅助,用于自定义render函数时,开发者可以调用此方法渲染组件的slot
|
||
'renderComponentSlot',
|
||
],
|
||
};
|
||
const vuePreset = {
|
||
from: 'vue',
|
||
imports: [
|
||
// vue lifecycle
|
||
'onActivated',
|
||
'onBeforeMount',
|
||
'onBeforeUnmount',
|
||
'onBeforeUpdate',
|
||
'onErrorCaptured',
|
||
'onDeactivated',
|
||
'onMounted',
|
||
'onServerPrefetch',
|
||
'onUnmounted',
|
||
'onUpdated',
|
||
// uni-app specific lifecycle
|
||
'onReuse',
|
||
'onRecycle',
|
||
// setup helpers
|
||
'useAttrs',
|
||
'useSlots',
|
||
'useComputedStyle',
|
||
'useRecycleState',
|
||
// reactivity,
|
||
'computed',
|
||
'customRef',
|
||
'isReadonly',
|
||
'isRef',
|
||
'isProxy',
|
||
'isReactive',
|
||
'markRaw',
|
||
'reactive',
|
||
'readonly',
|
||
'ref',
|
||
'shallowReactive',
|
||
'shallowReadonly',
|
||
'shallowRef',
|
||
'triggerRef',
|
||
'toRaw',
|
||
'toRef',
|
||
'toRefs',
|
||
'toValue',
|
||
'unref',
|
||
'watch',
|
||
'watchEffect',
|
||
'watchPostEffect',
|
||
'watchSyncEffect',
|
||
// component
|
||
'defineComponent',
|
||
'defineAsyncComponent',
|
||
'getCurrentInstance',
|
||
'inject',
|
||
'nextTick',
|
||
'provide',
|
||
'useCssModule',
|
||
'createApp',
|
||
'hasInjectionContext',
|
||
// render
|
||
'h',
|
||
'mergeProps',
|
||
'cloneVNode',
|
||
'isVNode',
|
||
'resolveComponent',
|
||
'resolveDirective',
|
||
'withDirectives',
|
||
'withModifiers',
|
||
// effect scope
|
||
'effectScope',
|
||
'EffectScope',
|
||
'getCurrentScope',
|
||
'onScopeDispose',
|
||
// types 全部全局导入
|
||
// vapor
|
||
'getCurrentGenericInstance',
|
||
],
|
||
};
|
||
function initAutoImportOptions(platform, { imports = [], ...userOptions }) {
|
||
rewriteAutoImportOnce();
|
||
const autoImport = [vuePreset];
|
||
// JS 引擎的 App 平台统一走 vue 生命周期导入
|
||
if (platform === 'app-ios' ||
|
||
platform === 'app-harmony' ||
|
||
(0, x_1.isUniAppXAndroidJsEngine)(platform)) {
|
||
autoImport.push(uniAppLifeCyclePreset);
|
||
}
|
||
else if (platform === 'web') {
|
||
autoImport.push(uniWebLifeCyclePreset);
|
||
}
|
||
else {
|
||
autoImport.push(uniLifeCyclePreset);
|
||
}
|
||
// 内置框架编译时,不能注入这些内容
|
||
if (!process.env.UNI_COMPILE_EXT_API_TYPE) {
|
||
autoImport.push(cloudPreset);
|
||
}
|
||
if (platform === 'web') {
|
||
autoImport.push(uniH5Preset);
|
||
}
|
||
else if (platform.startsWith('mp-')) {
|
||
autoImport.push(uniMiniProgramPreset);
|
||
if (process.env.UNI_APP_X === 'true') {
|
||
// 小程序端使用autoImport
|
||
autoImport.push(utsJsPreset);
|
||
}
|
||
}
|
||
const exclude = [/[\\/]\.git[\\/]/];
|
||
if (process.env.UNI_INPUT_DIR) {
|
||
exclude.push(...(0, workers_1.resolveWorkersDir)(process.env.UNI_INPUT_DIR).map((dir) => (0, utils_1.normalizePath)(path_1.default.join(process.env.UNI_INPUT_DIR, dir, '*'))));
|
||
}
|
||
return {
|
||
...userOptions,
|
||
include: [/\.[u]?ts$/, /\.[u]?vue/],
|
||
exclude,
|
||
imports: imports.concat(
|
||
// 旧版 Android x 仍由专有编译流程处理,Android Vapor 对齐 iOS 走通用自动导入
|
||
(0, x_1.isUniAppXAndroidNative)(platform) ? [] : autoImport),
|
||
dts: false,
|
||
};
|
||
}
|
||
exports.initAutoImportOptions = initAutoImportOptions;
|
||
const rewriteAutoImportOnce = (0, uni_shared_1.once)(() => {
|
||
const unimport = require('unimport');
|
||
const originalCreateUnimport = unimport.createUnimport;
|
||
unimport.createUnimport = (opts) => {
|
||
const unimport_ = originalCreateUnimport(opts);
|
||
const originalScanImportsFromDir = unimport_.scanImportsFromDir;
|
||
unimport_.scanImportsFromDir = async (dir, options) => {
|
||
const exports_ = (await originalScanImportsFromDir(dir, options));
|
||
scanCustomElements(exports_);
|
||
return exports_;
|
||
};
|
||
return unimport_;
|
||
};
|
||
});
|
||
function scanCustomElements(exports_) {
|
||
const utsCustomElementsExports = (0, uts_1.getUTSCustomElementsExports)();
|
||
for (const [key, value] of utsCustomElementsExports.entries()) {
|
||
value.exports.forEach((export_) => {
|
||
exports_.push({
|
||
from: key,
|
||
name: export_[0],
|
||
});
|
||
});
|
||
}
|
||
}
|