提交 3e375704 作者: 方治民

feat: 新增 sentry 配置

上级 61f36e21
...@@ -35,3 +35,9 @@ VITE_USE_PWA = false ...@@ -35,3 +35,9 @@ VITE_USE_PWA = false
# Is it compatible with older browsers # Is it compatible with older browsers
VITE_LEGACY = false VITE_LEGACY = false
# Sentry
VITE_SENTRY_URL=https://sentry.yiring.com
VITE_SENTRY_ORG=yiring
VITE_SENTRY_PROJECT=basic-vue-admin
VITE_SENTRY_DSN=https://72b9b829b2dfbb2379e94c7cbd3609e7@sentry.yiring.com/16
...@@ -31,3 +31,9 @@ pnpm-debug.log* ...@@ -31,3 +31,9 @@ pnpm-debug.log*
.mocks .mocks
.history .history
# Sentry Config File
.env.sentry-build-plugin
# Sentry Config File
.env.sentry-build-plugin
...@@ -49,12 +49,12 @@ ...@@ -49,12 +49,12 @@
"editor.defaultFormatter": "esbenp.prettier-vscode" "editor.defaultFormatter": "esbenp.prettier-vscode"
}, },
"editor.codeActionsOnSave": { "editor.codeActionsOnSave": {
"source.fixAll.eslint": true "source.fixAll.eslint": "explicit"
}, },
"[vue]": { "[vue]": {
"editor.codeActionsOnSave": { "editor.codeActionsOnSave": {
"source.fixAll.eslint": true, "source.fixAll.eslint": "explicit",
"source.fixAll.stylelint": true "source.fixAll.stylelint": "explicit"
} }
}, },
......
// #!/usr/bin/env node // #!/usr/bin/env node
import fs from 'node:fs'
import process from 'node:process' import process from 'node:process'
import colors from 'picocolors' import colors from 'picocolors'
import pkg from '../../package.json' import pkg from '../../package.json'
import { getRootPath } from '../utils'
import { OUTPUT_DIR } from '../constant'
import { runBuildConfig } from './buildConf' import { runBuildConfig } from './buildConf'
export async function runBuild() { export async function runBuild() {
...@@ -15,6 +18,15 @@ export async function runBuild() { ...@@ -15,6 +18,15 @@ export async function runBuild() {
runBuildConfig() runBuildConfig()
} }
// 递归删除 dist 目录下的 map 后缀文件
const dir = getRootPath(OUTPUT_DIR)
const files = fs.readdirSync(dir)
files.forEach((file) => {
if (file.endsWith('.map')) {
fs.unlinkSync(`${dir}/${file}`)
}
})
console.log(`✨ ${colors.cyan(`[${pkg.name}]`)}` + ' - build successfully!') console.log(`✨ ${colors.cyan(`[${pkg.name}]`)}` + ' - build successfully!')
} catch (error) { } catch (error) {
console.log(colors.red(`vite build error:\n${error}`)) console.log(colors.red(`vite build error:\n${error}`))
......
...@@ -16,6 +16,7 @@ import { configVisualizerConfig } from './visualizer' ...@@ -16,6 +16,7 @@ import { configVisualizerConfig } from './visualizer'
import { configThemePlugin } from './theme' import { configThemePlugin } from './theme'
import { configSvgIconsPlugin } from './svgSprite' import { configSvgIconsPlugin } from './svgSprite'
import { configAutoImportPlugin } from './autoImport' import { configAutoImportPlugin } from './autoImport'
import { configSentryPlugin } from './sentry'
export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
const { VITE_USE_MOCK, VITE_LEGACY, VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv const { VITE_USE_MOCK, VITE_LEGACY, VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv
...@@ -74,6 +75,9 @@ export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { ...@@ -74,6 +75,9 @@ export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) {
// vite-plugin-pwa // vite-plugin-pwa
vitePlugins.push(configPwaConfig(viteEnv)) vitePlugins.push(configPwaConfig(viteEnv))
} }
// Sentry
vitePlugins.push(configSentryPlugin(viteEnv))
} }
return vitePlugins return vitePlugins
......
import process from 'node:process'
import type { SentryVitePluginOptions } from '@sentry/vite-plugin'
import { sentryVitePlugin } from '@sentry/vite-plugin'
import colors from 'picocolors'
import pkg from '../../../package.json'
import { OUTPUT_DIR } from '../../constant'
export function configSentryPlugin(env: ViteEnv) {
const config: SentryVitePluginOptions = {
org: env.VITE_SENTRY_ORG,
project: env.VITE_SENTRY_PROJECT,
url: env.VITE_SENTRY_URL,
authToken: process.env.SENTRY_AUTH_TOKEN,
release: {
name: `${pkg.name}@${pkg.version}`,
},
sourcemaps: {
filesToDeleteAfterUpload: [`${OUTPUT_DIR}/**/*.js.map`],
},
debug: true,
}
console.log(`✨ ${colors.cyan(`[Sentry]`)} config`, config)
return sentryVitePlugin(config)
}
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
"serve": "npm run dev", "serve": "npm run dev",
"dev": "vite", "dev": "vite",
"build": "vite build && esno ./build/script/postBuild.ts", "build": "vite build && esno ./build/script/postBuild.ts",
"postbuild": "rimraf -g ./dist/**/*.map",
"build:test": "vite build --mode test", "build:test": "vite build --mode test",
"build:preview": "vite build --mode preview", "build:preview": "vite build --mode preview",
"build:no-cache": "pnpm clean:cache && npm run build", "build:no-cache": "pnpm clean:cache && npm run build",
...@@ -59,6 +60,7 @@ ...@@ -59,6 +60,7 @@
"@iconify/iconify": "^3.1.1", "@iconify/iconify": "^3.1.1",
"@logicflow/core": "^1.2.15", "@logicflow/core": "^1.2.15",
"@logicflow/extension": "^1.2.16", "@logicflow/extension": "^1.2.16",
"@sentry/vue": "^7.107.0",
"@stomp/stompjs": "^7.0.0", "@stomp/stompjs": "^7.0.0",
"@vue/runtime-core": "^3.3.4", "@vue/runtime-core": "^3.3.4",
"@vue/shared": "^3.3.4", "@vue/shared": "^3.3.4",
...@@ -103,6 +105,8 @@ ...@@ -103,6 +105,8 @@
"@commitlint/cli": "^17.7.2", "@commitlint/cli": "^17.7.2",
"@commitlint/config-conventional": "^17.7.0", "@commitlint/config-conventional": "^17.7.0",
"@iconify/json": "^2.2.125", "@iconify/json": "^2.2.125",
"@sentry/cli": "^2.30.2",
"@sentry/vite-plugin": "^2.15.0",
"@types/codemirror": "^5.60.10", "@types/codemirror": "^5.60.10",
"@types/crypto-js": "^4.1.2", "@types/crypto-js": "^4.1.2",
"@types/fs-extra": "^11.0.2", "@types/fs-extra": "^11.0.2",
......
...@@ -20,6 +20,9 @@ dependencies: ...@@ -20,6 +20,9 @@ dependencies:
'@logicflow/extension': '@logicflow/extension':
specifier: ^1.2.16 specifier: ^1.2.16
version: 1.2.16(ts-node@10.9.1) version: 1.2.16(ts-node@10.9.1)
'@sentry/vue':
specifier: ^7.107.0
version: 7.107.0(vue@3.3.4)
'@stomp/stompjs': '@stomp/stompjs':
specifier: ^7.0.0 specifier: ^7.0.0
version: 7.0.0 version: 7.0.0
...@@ -148,6 +151,12 @@ devDependencies: ...@@ -148,6 +151,12 @@ devDependencies:
'@iconify/json': '@iconify/json':
specifier: ^2.2.125 specifier: ^2.2.125
version: 2.2.125 version: 2.2.125
'@sentry/cli':
specifier: ^2.30.2
version: 2.30.2
'@sentry/vite-plugin':
specifier: ^2.15.0
version: 2.15.0
'@types/codemirror': '@types/codemirror':
specifier: ^5.60.10 specifier: ^5.60.10
version: 5.60.10 version: 5.60.10
...@@ -2761,6 +2770,209 @@ packages: ...@@ -2761,6 +2770,209 @@ packages:
rollup: 3.29.4 rollup: 3.29.4
dev: true dev: true
/@sentry-internal/feedback@7.107.0:
resolution: {integrity: sha512-okF0B9AJHrpkwNMxNs/Lffw3N5ZNbGwz4uvCfyOfnMxc7E2VfDM18QzUvTBRvNr3bA9wl+InJ+EMG3aZhyPunA==}
engines: {node: '>=12'}
dependencies:
'@sentry/core': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry-internal/replay-canvas@7.107.0:
resolution: {integrity: sha512-dmDL9g3QDfo7axBOsVnpiKdJ/DXrdeuRv1AqsLgwzJKvItsv0ZizX0u+rj5b1UoxcwbXRMxJ0hit5a1yt3t/ow==}
engines: {node: '>=12'}
dependencies:
'@sentry/core': 7.107.0
'@sentry/replay': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry-internal/tracing@7.107.0:
resolution: {integrity: sha512-le9wM8+OHBbq7m/8P7JUJ1UhSPIty+Z/HmRXc5Z64ODZcOwFV6TmDpYx729IXDdz36XUKmeI+BeM7yQdTTZPfQ==}
engines: {node: '>=8'}
dependencies:
'@sentry/core': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry/babel-plugin-component-annotate@2.15.0:
resolution: {integrity: sha512-4AaRN2E1iqOPlceDE5ae4thnq717reEQkqOslSWpJf7FmJ+oDrp2bWQhO82xcW8ZBBMbtkOGw2wmrScq5TnMxw==}
engines: {node: '>= 14'}
dev: true
/@sentry/browser@7.107.0:
resolution: {integrity: sha512-KnqaQDhxv6w9dJ+mYLsNwPeGZfgbpM3vaismBNyJCKLgWn2V75kxkSq+bDX8LQT/13AyK7iFp317L6P8EuNa3g==}
engines: {node: '>=8'}
dependencies:
'@sentry-internal/feedback': 7.107.0
'@sentry-internal/replay-canvas': 7.107.0
'@sentry-internal/tracing': 7.107.0
'@sentry/core': 7.107.0
'@sentry/replay': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry/bundler-plugin-core@2.15.0:
resolution: {integrity: sha512-K6tEmo6ilUdR5uEQZ4P1uaXCvRoAeq5JsJAg7lRv0JSG5XG67jhoHu+mrpiDMB93FxbTgCQkPCT87Z0Bmqpmew==}
engines: {node: '>= 14'}
dependencies:
'@babel/core': 7.23.0
'@sentry/babel-plugin-component-annotate': 2.15.0
'@sentry/cli': 2.30.2
dotenv: 16.3.1
find-up: 5.0.0
glob: 9.3.5
magic-string: 0.27.0
unplugin: 1.0.1
transitivePeerDependencies:
- encoding
- supports-color
dev: true
/@sentry/cli-darwin@2.30.2:
resolution: {integrity: sha512-lZkKXMt0HUAwLQuPpi/DM3CsdCCp+6B2cdur+8fAq7uARXTOsTKVDxv9pkuJHCgHUnguh8ittP5GMr0baTxmMg==}
engines: {node: '>=10'}
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@sentry/cli-linux-arm64@2.30.2:
resolution: {integrity: sha512-IWassuXggNhHOPCNrORNmd5SrAx5rU4XDlgOWBJr/ez7DvlPrr9EhV1xsdht6K4mPXhCGJq3rtRdCoWGJQW6Uw==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux, freebsd]
requiresBuild: true
dev: true
optional: true
/@sentry/cli-linux-arm@2.30.2:
resolution: {integrity: sha512-H7hqiLpEL7w/EHdhuUGatwg9O080mdujq4/zS96buKIHXxZE6KqMXGtMVIAvTl1+z6BlBEnfvZGI19MPw3t/7w==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux, freebsd]
requiresBuild: true
dev: true
optional: true
/@sentry/cli-linux-i686@2.30.2:
resolution: {integrity: sha512-gZIq131M4TJTG1lX9uvpoaGWaEXCEfdDXrXu/z/YZmAKBcThpMYChodXmm8FB6X4xb0TPXzIFqdzlLdglFK46g==}
engines: {node: '>=10'}
cpu: [x86, ia32]
os: [linux, freebsd]
requiresBuild: true
dev: true
optional: true
/@sentry/cli-linux-x64@2.30.2:
resolution: {integrity: sha512-NmTAIl7aW9OHxwB4149sBfvCbTyK9T/CvBX38keaD2yIThet9gZ4koP49hBDxYF99aQX3E+LIAqWwnkV9W72Sw==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux, freebsd]
requiresBuild: true
dev: true
optional: true
/@sentry/cli-win32-i686@2.30.2:
resolution: {integrity: sha512-SBR/Q3T6o+7uHwHNdjcG9GA3R++9w8oi778b95GuOC3dh0WOU6hXaKwQWe95ZcuSd2rKpouH7dhMjqqNM4HxOA==}
engines: {node: '>=10'}
cpu: [x86, ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@sentry/cli-win32-x64@2.30.2:
resolution: {integrity: sha512-gF9wSZxzXFgakkC+uKVLAAYlbYj13e1gTsNm3gm+ODfpV+rbHwvbKoLfNsbVCFVCEZxIV2rXEP5WmTr0kiMvWQ==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@sentry/cli@2.30.2:
resolution: {integrity: sha512-jQ/RBJ3bZ4PFbfOsGq8EykygHHmXXPw+i6jqsnQfAPIeZoX+DsqpAZbYubQEZKekmQ8EVGFxGHzUVkd6hLVMbA==}
engines: {node: '>= 10'}
hasBin: true
requiresBuild: true
dependencies:
https-proxy-agent: 5.0.1
node-fetch: 2.7.0
progress: 2.0.3
proxy-from-env: 1.1.0
which: 2.0.2
optionalDependencies:
'@sentry/cli-darwin': 2.30.2
'@sentry/cli-linux-arm': 2.30.2
'@sentry/cli-linux-arm64': 2.30.2
'@sentry/cli-linux-i686': 2.30.2
'@sentry/cli-linux-x64': 2.30.2
'@sentry/cli-win32-i686': 2.30.2
'@sentry/cli-win32-x64': 2.30.2
transitivePeerDependencies:
- encoding
- supports-color
dev: true
/@sentry/core@7.107.0:
resolution: {integrity: sha512-C7ogye6+KPyBi8NVL0P8Rxx3Ur7Td8ufnjxosVy678lqY+dcYPk/HONROrzUFYW5fMKWL4/KYnwP+x9uHnkDmw==}
engines: {node: '>=8'}
dependencies:
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry/replay@7.107.0:
resolution: {integrity: sha512-BNJDEVaEwr/YnV22qnyVA1almx/3p615m3+KaF8lPo7YleYgJGSJv1auH64j1G8INkrJ0J0wFBujb1EFjMYkxA==}
engines: {node: '>=12'}
dependencies:
'@sentry-internal/tracing': 7.107.0
'@sentry/core': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
dev: false
/@sentry/types@7.107.0:
resolution: {integrity: sha512-H7qcPjPSUWHE/Zf5bR1EE24G0pGVuJgrSx8Tvvl5nKEepswMYlbXHRVSDN0gTk/E5Z7cqf+hUBOpkQgZyps77w==}
engines: {node: '>=8'}
dev: false
/@sentry/utils@7.107.0:
resolution: {integrity: sha512-C6PbN5gHh73MRHohnReeQ60N8rrLYa9LciHue3Ru2290eSThg4CzsPnx4SzkGpkSeVlhhptKtKZ+hp/ha3iVuw==}
engines: {node: '>=8'}
dependencies:
'@sentry/types': 7.107.0
dev: false
/@sentry/vite-plugin@2.15.0:
resolution: {integrity: sha512-Q1ML+6p0xBLEbk6pHnZoLs7gQctXrsyI/zzhEQsR/uyPIZIkrwSLcnZ6iCjSz570SvK9H0UVgp1bdLJK/Mpb7Q==}
engines: {node: '>= 14'}
dependencies:
'@sentry/bundler-plugin-core': 2.15.0
unplugin: 1.0.1
transitivePeerDependencies:
- encoding
- supports-color
dev: true
/@sentry/vue@7.107.0(vue@3.3.4):
resolution: {integrity: sha512-nUUaa5s2W7UmgjavoksoBlduc6mePZmo4k3y5lXPhSvZ92FcidLZItRUkwubaUBHgu8zvRxkTeXGhbqfWN4Ukg==}
engines: {node: '>=8'}
peerDependencies:
vue: 2.x || 3.x
dependencies:
'@sentry/browser': 7.107.0
'@sentry/core': 7.107.0
'@sentry/types': 7.107.0
'@sentry/utils': 7.107.0
vue: 3.3.4
dev: false
/@simonwep/pickr@1.8.2: /@simonwep/pickr@1.8.2:
resolution: {integrity: sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==} resolution: {integrity: sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==}
dependencies: dependencies:
...@@ -3675,7 +3887,6 @@ packages: ...@@ -3675,7 +3887,6 @@ packages:
debug: 4.3.4 debug: 4.3.4
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: false
/ajv@6.12.6: /ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
...@@ -6927,6 +7138,16 @@ packages: ...@@ -6927,6 +7138,16 @@ packages:
once: 1.4.0 once: 1.4.0
dev: true dev: true
/glob@9.3.5:
resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
fs.realpath: 1.0.0
minimatch: 8.0.4
minipass: 4.2.8
path-scurry: 1.10.1
dev: true
/global-dirs@0.1.1: /global-dirs@0.1.1:
resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==}
engines: {node: '>=4'} engines: {node: '>=4'}
...@@ -7263,7 +7484,6 @@ packages: ...@@ -7263,7 +7484,6 @@ packages:
debug: 4.3.4 debug: 4.3.4
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: false
/human-signals@2.1.0: /human-signals@2.1.0:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
...@@ -8837,6 +9057,13 @@ packages: ...@@ -8837,6 +9057,13 @@ packages:
sourcemap-codec: 1.4.8 sourcemap-codec: 1.4.8
dev: true dev: true
/magic-string@0.27.0:
resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
engines: {node: '>=12'}
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
dev: true
/magic-string@0.30.4: /magic-string@0.30.4:
resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==}
engines: {node: '>=12'} engines: {node: '>=12'}
...@@ -9059,6 +9286,13 @@ packages: ...@@ -9059,6 +9286,13 @@ packages:
brace-expansion: 2.0.1 brace-expansion: 2.0.1
dev: true dev: true
/minimatch@8.0.4:
resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
brace-expansion: 2.0.1
dev: true
/minimatch@9.0.1: /minimatch@9.0.1:
resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
...@@ -9090,6 +9324,11 @@ packages: ...@@ -9090,6 +9324,11 @@ packages:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true dev: true
/minipass@4.2.8:
resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
engines: {node: '>=8'}
dev: true
/minipass@7.0.4: /minipass@7.0.4:
resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
...@@ -9920,6 +10159,11 @@ packages: ...@@ -9920,6 +10159,11 @@ packages:
resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
dev: true dev: true
/progress@2.0.3:
resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
engines: {node: '>=0.4.0'}
dev: true
/prompts@2.4.2: /prompts@2.4.2:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
...@@ -11819,6 +12063,15 @@ packages: ...@@ -11819,6 +12063,15 @@ packages:
- rollup - rollup
dev: true dev: true
/unplugin@1.0.1:
resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==}
dependencies:
acorn: 8.10.0
chokidar: 3.5.3
webpack-sources: 3.2.3
webpack-virtual-modules: 0.5.0
dev: true
/unplugin@1.5.0: /unplugin@1.5.0:
resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==}
dependencies: dependencies:
...@@ -12547,6 +12800,7 @@ packages: ...@@ -12547,6 +12800,7 @@ packages:
/workbox-google-analytics@7.0.0: /workbox-google-analytics@7.0.0:
resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==} resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==}
deprecated: It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained
dependencies: dependencies:
workbox-background-sync: 7.0.0 workbox-background-sync: 7.0.0
workbox-core: 7.0.0 workbox-core: 7.0.0
......
...@@ -170,6 +170,7 @@ export function setupErrorHandle(app: App) { ...@@ -170,6 +170,7 @@ export function setupErrorHandle(app: App) {
if (!useErrorHandle) { if (!useErrorHandle) {
return return
} }
// Vue exception monitoring; // Vue exception monitoring;
app.config.errorHandler = vueErrorHandler app.config.errorHandler = vueErrorHandler
......
...@@ -6,6 +6,7 @@ import 'virtual:windi-utilities.css' ...@@ -6,6 +6,7 @@ import 'virtual:windi-utilities.css'
// Register icon sprite // Register icon sprite
import 'virtual:svg-icons-register' import 'virtual:svg-icons-register'
import { createApp } from 'vue' import { createApp } from 'vue'
import * as Sentry from '@sentry/vue'
import App from './App.vue' import App from './App.vue'
import { initAppConfigStore } from '/@/logics/initAppConfig' import { initAppConfigStore } from '/@/logics/initAppConfig'
import { setupErrorHandle } from '/@/logics/error-handle' import { setupErrorHandle } from '/@/logics/error-handle'
...@@ -16,8 +17,7 @@ import { setupGlobDirectives } from '/@/directives' ...@@ -16,8 +17,7 @@ import { setupGlobDirectives } from '/@/directives'
import { setupI18n } from '/@/locales/setupI18n' import { setupI18n } from '/@/locales/setupI18n'
import { setupAppConfig } from '/@/config/app' import { setupAppConfig } from '/@/config/app'
import { registerGlobComp } from '/@/components/registerGlobComp' import { registerGlobComp } from '/@/components/registerGlobComp'
import { isDevMode, isProdMode } from './utils/env'
import { isDevMode } from './utils/env'
// fix: Added non-passive event listener to a scroll-blocking 'wheel' event // fix: Added non-passive event listener to a scroll-blocking 'wheel' event
// import 'default-passive-events' // import 'default-passive-events'
...@@ -29,6 +29,20 @@ if (isDevMode()) { ...@@ -29,6 +29,20 @@ if (isDevMode()) {
async function bootstrap() { async function bootstrap() {
const app = createApp(App) const app = createApp(App)
// Sentry
if (isProdMode()) {
Sentry.init({
app,
dsn: import.meta.env.VITE_SENTRY_DSN,
integrations: [Sentry.browserTracingIntegration(), Sentry.replayIntegration()],
// Performance Monitoring
tracesSampleRate: 1.0,
// Session Replay
replaysSessionSampleRate: 0.1,
replaysOnErrorSampleRate: 1.0,
})
}
// 注册 App 配置 // 注册 App 配置
setupAppConfig(app) setupAppConfig(app)
......
...@@ -73,6 +73,13 @@ declare global { ...@@ -73,6 +73,13 @@ declare global {
VITE_LEGACY: boolean VITE_LEGACY: boolean
VITE_USE_IMAGEMIN: boolean VITE_USE_IMAGEMIN: boolean
VITE_GENERATE_UI: string VITE_GENERATE_UI: string
// Sentry
VITE_SENTRY_URL: string
VITE_SENTRY_TOKEN: string
VITE_SENTRY_ORG: string
VITE_SENTRY_PROJECT: string
VITE_SENTRY_DSN: string
} }
declare function parseInt(s: string | number, radix?: number): number declare function parseInt(s: string | number, radix?: number): number
......
...@@ -66,6 +66,8 @@ export default ({ command, mode }: ConfigEnv): UserConfig => { ...@@ -66,6 +66,8 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
// Turning off brotliSize display can slightly reduce packaging time // Turning off brotliSize display can slightly reduce packaging time
reportCompressedSize: false, reportCompressedSize: false,
chunkSizeWarningLimit: 2000, chunkSizeWarningLimit: 2000,
// Sentry upload sourcemap
sourcemap: true,
}, },
define: { define: {
// setting vue-i18-next // setting vue-i18-next
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论