From 53d896ef4bef934bbc03aac83d7fe6bfc8dafd8c Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Tue, 17 Aug 2021 15:36:30 +0800 Subject: [PATCH] feat(app): sourcemap --- .../uni-app-plus/dist/uni-app-service.es.js | 1 + .../src/service/api/ad/interactiveAd.ts | 2 +- .../src/service/api/base/index.ts | 1 - .../service/api/base/requireNativePlugin.ts | 11 -------- .../src/service/api/device/clipboard.ts | 2 +- .../service/api/device/soterAuthentication.ts | 3 ++- .../src/service/api/network/request.ts | 2 +- .../src/service/api/network/socket.ts | 2 +- .../service/api/plugin/requireNativePlugin.ts | 12 +++++++-- .../src/service/api/ui/subNVue.ts | 2 +- packages/uni-app-vite/src/plugin/build.ts | 18 +++++++++++-- packages/uni-cli-shared/src/hbx/env.ts | 26 +++++++++++++++++++ .../src/vite/plugins/cssScoped.ts | 2 +- packages/vite-plugin-uni/src/cli/utils.ts | 5 +++- .../src/configResolved/plugins/easycom.ts | 2 +- 15 files changed, 66 insertions(+), 25 deletions(-) delete mode 100644 packages/uni-app-plus/src/service/api/base/index.ts delete mode 100644 packages/uni-app-plus/src/service/api/base/requireNativePlugin.ts diff --git a/packages/uni-app-plus/dist/uni-app-service.es.js b/packages/uni-app-plus/dist/uni-app-service.es.js index 0db3d58a7..24249fbdb 100644 --- a/packages/uni-app-plus/dist/uni-app-service.es.js +++ b/packages/uni-app-plus/dist/uni-app-service.es.js @@ -12122,6 +12122,7 @@ var serviceContext = (function (vue) { share: share, shareWithSystem: shareWithSystem, requestPayment: requestPayment, + requireNativePlugin: requireNativePlugin, __vuePlugin: index$1, restoreGlobal: restoreGlobal, createRewardedVideoAd: createRewardedVideoAd, diff --git a/packages/uni-app-plus/src/service/api/ad/interactiveAd.ts b/packages/uni-app-plus/src/service/api/ad/interactiveAd.ts index c36192720..9cf15550f 100644 --- a/packages/uni-app-plus/src/service/api/ad/interactiveAd.ts +++ b/packages/uni-app-plus/src/service/api/ad/interactiveAd.ts @@ -6,7 +6,7 @@ import { CreateInteractiveAdProtocol, } from '@dcloudio/uni-api' -import { requireNativePlugin } from '../base' +import { requireNativePlugin } from '../plugin/requireNativePlugin' import { AdEventHandler, EventType } from './adBase' diff --git a/packages/uni-app-plus/src/service/api/base/index.ts b/packages/uni-app-plus/src/service/api/base/index.ts deleted file mode 100644 index f60f76719..000000000 --- a/packages/uni-app-plus/src/service/api/base/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './requireNativePlugin' diff --git a/packages/uni-app-plus/src/service/api/base/requireNativePlugin.ts b/packages/uni-app-plus/src/service/api/base/requireNativePlugin.ts deleted file mode 100644 index fdca59d1e..000000000 --- a/packages/uni-app-plus/src/service/api/base/requireNativePlugin.ts +++ /dev/null @@ -1,11 +0,0 @@ -declare const weex: any -declare const __requireNativePlugin__: any - -export function requireNativePlugin(pluginName: string) { - /* eslint-disable no-undef */ - if (typeof weex !== 'undefined') { - return weex.requireModule(pluginName) - } - /* eslint-disable no-undef */ - return __requireNativePlugin__(pluginName) -} diff --git a/packages/uni-app-plus/src/service/api/device/clipboard.ts b/packages/uni-app-plus/src/service/api/device/clipboard.ts index 9f0a97171..ed84cacb9 100644 --- a/packages/uni-app-plus/src/service/api/device/clipboard.ts +++ b/packages/uni-app-plus/src/service/api/device/clipboard.ts @@ -5,7 +5,7 @@ import { API_TYPE_SET_CLIPBOARD_DATA, defineAsyncApi, } from '@dcloudio/uni-api' -import { requireNativePlugin } from '../base' +import { requireNativePlugin } from '../plugin/requireNativePlugin' export const getClipboardData = defineAsyncApi( API_GET_CLIPBOARD_DATA, diff --git a/packages/uni-app-plus/src/service/api/device/soterAuthentication.ts b/packages/uni-app-plus/src/service/api/device/soterAuthentication.ts index 84b2dc7a9..16b605c0e 100644 --- a/packages/uni-app-plus/src/service/api/device/soterAuthentication.ts +++ b/packages/uni-app-plus/src/service/api/device/soterAuthentication.ts @@ -1,5 +1,4 @@ import { extend } from '@vue/shared' -import { requireNativePlugin } from '../../api/base/requireNativePlugin' import { useI18n, initI18nStartSoterAuthenticationMsgsOnce, @@ -19,6 +18,8 @@ import { StartSoterAuthenticationProtocols, } from '@dcloudio/uni-api' +import { requireNativePlugin } from '../plugin/requireNativePlugin' + function checkIsSupportFaceID() { const platform = plus.os.name!.toLowerCase() if (platform !== 'ios') { diff --git a/packages/uni-app-plus/src/service/api/network/request.ts b/packages/uni-app-plus/src/service/api/network/request.ts index cf3a7e708..d55d0ff48 100644 --- a/packages/uni-app-plus/src/service/api/network/request.ts +++ b/packages/uni-app-plus/src/service/api/network/request.ts @@ -6,8 +6,8 @@ import { RequestOptions, RequestProtocol, } from '@dcloudio/uni-api' -import { requireNativePlugin } from '../base' import { base64ToArrayBuffer } from '@dcloudio/uni-api' +import { requireNativePlugin } from '../plugin/requireNativePlugin' type Type = 'base64' | 'text' type Headers = Record diff --git a/packages/uni-app-plus/src/service/api/network/socket.ts b/packages/uni-app-plus/src/service/api/network/socket.ts index 4641b4dfa..0af37c298 100644 --- a/packages/uni-app-plus/src/service/api/network/socket.ts +++ b/packages/uni-app-plus/src/service/api/network/socket.ts @@ -13,7 +13,7 @@ import { API_TYPE_CLOSE_SOCKET, CloseSocketProtocol, } from '@dcloudio/uni-api' -import { requireNativePlugin } from '../base' +import { requireNativePlugin } from '../plugin/requireNativePlugin' import { base64ToArrayBuffer, arrayBufferToBase64 } from '@dcloudio/uni-api' import { extend, capitalize } from '@vue/shared' import { callOptions } from '@dcloudio/uni-shared' diff --git a/packages/uni-app-plus/src/service/api/plugin/requireNativePlugin.ts b/packages/uni-app-plus/src/service/api/plugin/requireNativePlugin.ts index 78e0d51c0..fdca59d1e 100644 --- a/packages/uni-app-plus/src/service/api/plugin/requireNativePlugin.ts +++ b/packages/uni-app-plus/src/service/api/plugin/requireNativePlugin.ts @@ -1,3 +1,11 @@ -export function requireNativePlugin(name: string) { - return weex.requireModule(name) +declare const weex: any +declare const __requireNativePlugin__: any + +export function requireNativePlugin(pluginName: string) { + /* eslint-disable no-undef */ + if (typeof weex !== 'undefined') { + return weex.requireModule(pluginName) + } + /* eslint-disable no-undef */ + return __requireNativePlugin__(pluginName) } diff --git a/packages/uni-app-plus/src/service/api/ui/subNVue.ts b/packages/uni-app-plus/src/service/api/ui/subNVue.ts index 9b0d8b6ea..1dbdb5689 100644 --- a/packages/uni-app-plus/src/service/api/ui/subNVue.ts +++ b/packages/uni-app-plus/src/service/api/ui/subNVue.ts @@ -1,5 +1,5 @@ import { APP_SERVICE_ID } from '../.../../../../constants' -import { requireNativePlugin } from '../base/requireNativePlugin' +import { requireNativePlugin } from '../plugin/requireNativePlugin' import { PlusWebviewWebviewObjectWithExtras } from '../../framework/webview/init/subNVues' const EVENT_TYPE_NAME = 'UniAppSubNVue' diff --git a/packages/uni-app-vite/src/plugin/build.ts b/packages/uni-app-vite/src/plugin/build.ts index e4b366e20..0731f1c32 100644 --- a/packages/uni-app-vite/src/plugin/build.ts +++ b/packages/uni-app-vite/src/plugin/build.ts @@ -9,9 +9,11 @@ import { } from '@dcloudio/uni-cli-shared' export function buildOptions(): UserConfig['build'] { + const inputDir = process.env.UNI_INPUT_DIR + const outputDir = process.env.UNI_OUTPUT_DIR // 开始编译时,清空输出目录 - if (fs.existsSync(process.env.UNI_OUTPUT_DIR)) { - emptyDir(process.env.UNI_OUTPUT_DIR) + if (fs.existsSync(outputDir)) { + emptyDir(outputDir) } return { // sourcemap: 'inline', @@ -24,6 +26,18 @@ export function buildOptions(): UserConfig['build'] { name: 'AppService', format: process.env.UNI_APP_CODE_SPLITING ? 'amd' : 'iife', entryFileNames: 'app-service.js', + sourcemapPathTransform(relativeSourcePath, sourcemapPath) { + const sourcePath = normalizePath( + path.relative( + inputDir, + path.resolve(path.dirname(sourcemapPath), relativeSourcePath) + ) + ) + if (sourcePath.startsWith('..')) { + return '' + } + return 'uni-app:///' + sourcePath + }, manualChunks: {}, chunkFileNames(chunk) { if (chunk.isDynamicEntry && chunk.facadeModuleId) { diff --git a/packages/uni-cli-shared/src/hbx/env.ts b/packages/uni-cli-shared/src/hbx/env.ts index 116af3bf6..d1bcbdbf3 100644 --- a/packages/uni-cli-shared/src/hbx/env.ts +++ b/packages/uni-cli-shared/src/hbx/env.ts @@ -1,4 +1,5 @@ import path from 'path' +import BuiltinModule from 'module' import { once } from '@dcloudio/uni-shared' export const isInHBuilderX = once(() => { @@ -17,3 +18,28 @@ export const isInHBuilderX = once(() => { export const runByHBuilderX = once(() => { return !!process.env.UNI_HBUILDERX_PLUGINS }) + +/** + * 增加 node_modules + */ +export function initModulePaths() { + if (!isInHBuilderX()) { + return + } + const Module = + module.constructor.length > 1 ? module.constructor : BuiltinModule + + const nodeModulesPath = path.resolve( + process.env.UNI_CLI_CONTEXT, + 'node_modules' + ) + + const oldNodeModulePaths = (Module as any)._nodeModulePaths + ;(Module as any)._nodeModulePaths = function (from: string) { + const paths = oldNodeModulePaths.call(this, from) as string[] + if (!paths.includes(nodeModulesPath)) { + paths.push(nodeModulesPath) + } + return paths + } +} diff --git a/packages/uni-cli-shared/src/vite/plugins/cssScoped.ts b/packages/uni-cli-shared/src/vite/plugins/cssScoped.ts index aba5c4990..367910dec 100644 --- a/packages/uni-cli-shared/src/vite/plugins/cssScoped.ts +++ b/packages/uni-cli-shared/src/vite/plugins/cssScoped.ts @@ -43,7 +43,7 @@ export function uniCssScopedPlugin( debugScoped(id) return { code: addScoped(code), - map: this.getCombinedSourcemap(), + map: null, } } }, diff --git a/packages/vite-plugin-uni/src/cli/utils.ts b/packages/vite-plugin-uni/src/cli/utils.ts index 251c45c00..da21b09dc 100644 --- a/packages/vite-plugin-uni/src/cli/utils.ts +++ b/packages/vite-plugin-uni/src/cli/utils.ts @@ -2,7 +2,7 @@ import fs from 'fs' import path from 'path' import { BuildOptions, InlineConfig } from 'vite' -import { M, isInHBuilderX } from '@dcloudio/uni-cli-shared' +import { M, isInHBuilderX, initModulePaths } from '@dcloudio/uni-cli-shared' import { CliOptions } from '.' import { initNVueEnv } from './nvue' @@ -107,6 +107,9 @@ export function initEnv(type: 'dev' | 'build', options: CliOptions) { : '') ) } + + initModulePaths() + console.log(M['compiling']) } diff --git a/packages/vite-plugin-uni/src/configResolved/plugins/easycom.ts b/packages/vite-plugin-uni/src/configResolved/plugins/easycom.ts index d628cfb2d..b8b6adffc 100644 --- a/packages/vite-plugin-uni/src/configResolved/plugins/easycom.ts +++ b/packages/vite-plugin-uni/src/configResolved/plugins/easycom.ts @@ -120,7 +120,7 @@ export function uniEasycomPlugin( } return { code, - map: this.getCombinedSourcemap(), + map: null, } }, } -- GitLab