feat: 构建相关

This commit is contained in:
Asam
2023-09-06 17:28:54 +08:00
parent 6c3cb35e54
commit 1671ed3be7
8 changed files with 95 additions and 16 deletions

2
.gitignore vendored
View File

@@ -53,3 +53,5 @@ package-lock.json
docker/mysql/data/*
client_dist

View File

@@ -4,7 +4,8 @@
"description": "",
"main": "index.js",
"scripts": {
"dev:web": "pnpm -C packages/rtc-web dev"
"dev:web": "pnpm -C packages/rtc-web dev",
"build:web": "pnpm -C packages/rtc-web build"
},
"keywords": [],
"author": "",

View File

@@ -37,6 +37,7 @@
"prettier": "^2.8.8",
"prettier-plugin-tailwindcss": "^0.3.0",
"tailwindcss": "^3.3.2",
"terser": "^5.19.4",
"typescript": "^5.1.3",
"vconsole": "^3.15.1",
"vite": "^4.3.9",

View File

@@ -3,9 +3,10 @@ import { useFetch, useLocalStorage } from '@vueuse/core';
import { ref, shallowReactive } from 'vue';
import io from 'socket.io-client';
import { InitDataKeyType } from '@/context';
import { isDev } from '@/utils';
export const useFetchData = async () => {
const useTurn = useLocalStorage(ConfigEnum.useRelay, false);
const useTurn = useLocalStorage(ConfigEnum.useRelay, isDev() ? false : true);
const { data, error } = await useFetch(
() => `/api/comm/initData?turn=${useTurn.value}`

View File

@@ -12,9 +12,9 @@ import {
} from 'vue';
import { useSocket } from './socket-utils';
import { SocketEventName } from '@/config';
import { useRouteParamsReactive } from '.';
import { useRouteParamsReactive, useUserAgent } from '.';
import { InitDataKey } from '@/context';
import { genNickName, resetUrl } from '@/utils';
import { genNickName, isDev, resetUrl } from '@/utils';
import { uniqBy } from 'lodash';
import { watchArray } from '@vueuse/core';
@@ -71,6 +71,8 @@ export const useCreateRoom = (
) => {
const initData = inject(InitDataKey);
const { getNetWorkState, isMobile } = useUserAgent();
const { roomId } = useRouteParamsReactive(['roomId']);
const { isValid } = useRoom(() => roomId.value || '');
@@ -82,8 +84,8 @@ export const useCreateRoom = (
password: '',
nickName: genNickName(),
langMode: initData?.value.langMode,
ua: 'pc',
// network: this.network,
ua: isMobile ? 'mobile' : 'pc',
network: getNetWorkState(),
});
};
@@ -142,8 +144,9 @@ export const useRoomConnect = (option: ConnectOption = {}) => {
);
const createRtcConnect = async (id: string) => {
// const pc = new RTCPeerConnection(initData.value.config);
const pc = new RTCPeerConnection();
const pc = new RTCPeerConnection(
isDev() ? undefined : initData.value.config
);
pc.onicecandidate = (event) => {
if (event.candidate != null) {
const message = {

View File

@@ -1,9 +1,40 @@
/* eslint-disable indent */
export const useUserAgent = () => {
const uerAgent = window.navigator.userAgent;
const isMobile = /Mobi|Android|iPhone/i.test(uerAgent);
const getNetWorkState = () => {
let networkStr = uerAgent.match(/NetType\/\w+/)
? uerAgent.match(/NetType\/\w+/)?.[0]
: 'NetType/other';
networkStr = networkStr?.toLowerCase().replace('nettype/', '');
if (
networkStr &&
!['wifi', '5g', '3g', '4g', '2g', '3gnet', 'slow-2g'].includes(networkStr)
) {
if ((navigator as any).connection) {
networkStr = (navigator as any).connection.effectiveType;
}
}
switch (networkStr) {
case 'wifi':
return 'wifi';
case '5g':
return '5g';
case '4g':
return '4g';
case '3g' || '3gnet':
return '3g';
case '2g' || 'slow-2g':
return '2g';
default:
return 'unknow';
}
};
return {
isMobile,
getNetWorkState,
};
};

View File

@@ -15,6 +15,17 @@ const pathResolve = (path: string) => resolve(__dirname, path);
// https://vitejs.dev/config/
export default defineConfig({
build: {
outDir: resolve(__dirname, '../../../client_dist/rtc-web'),
minify: 'terser',
emptyOutDir: true,
terserOptions: {
compress: {
drop_console: true,
drop_debugger: true,
},
},
},
resolve: {
alias: [
{

45
client/pnpm-lock.yaml generated
View File

@@ -27,6 +27,7 @@ importers:
prettier-plugin-tailwindcss: ^0.3.0
socket.io-client: 2.3.0
tailwindcss: ^3.3.2
terser: ^5.19.4
typescript: ^5.1.3
vconsole: ^3.15.1
vite: ^4.3.9
@@ -67,9 +68,10 @@ importers:
prettier: 2.8.8
prettier-plugin-tailwindcss: 0.3.0_prettier@2.8.8
tailwindcss: 3.3.2
terser: 5.19.4
typescript: 5.1.3
vconsole: 3.15.1
vite: 4.3.9_@types+node@20.3.2
vite: 4.3.9_66pwffvb2axzwdhxmcirxliemu
vite-plugin-eslint: 1.8.1_eslint@8.43.0+vite@4.3.9
vite-plugin-svg-icons: 2.0.1_vite@4.3.9
vue-eslint-parser: 9.3.1_eslint@8.43.0
@@ -639,6 +641,12 @@ packages:
resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
engines: {node: '>=6.0.0'}
/@jridgewell/source-map/0.3.5:
resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==}
dependencies:
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.18
/@jridgewell/sourcemap-codec/1.4.14:
resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
@@ -865,7 +873,7 @@ packages:
'@babel/core': 7.22.5
'@babel/plugin-transform-typescript': 7.22.5_@babel+core@7.22.5
'@vue/babel-plugin-jsx': 1.1.4_@babel+core@7.22.5
vite: 4.3.9_@types+node@20.3.2
vite: 4.3.9_66pwffvb2axzwdhxmcirxliemu
vue: 3.3.4
transitivePeerDependencies:
- supports-color
@@ -878,7 +886,7 @@ packages:
vite: ^4.0.0
vue: ^3.2.25
dependencies:
vite: 4.3.9_@types+node@20.3.2
vite: 4.3.9_66pwffvb2axzwdhxmcirxliemu
vue: 3.3.4
dev: true
@@ -1087,7 +1095,6 @@ packages:
resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
/after/0.8.2:
resolution: {integrity: sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==}
@@ -1317,6 +1324,9 @@ packages:
node-releases: 2.0.12
update-browserslist-db: 1.0.11_browserslist@4.21.9
/buffer-from/1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
/cache-base/1.0.1:
resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
engines: {node: '>=0.10.0'}
@@ -1445,6 +1455,9 @@ packages:
resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
dev: true
/commander/2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
/commander/4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
@@ -3401,6 +3414,12 @@ packages:
urix: 0.1.0
dev: true
/source-map-support/0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
dependencies:
buffer-from: 1.1.2
source-map: 0.6.1
/source-map-url/0.4.1:
resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
deprecated: See https://github.com/lydell/source-map-url#deprecated
@@ -3414,7 +3433,6 @@ packages:
/source-map/0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
dev: true
/split-string/3.1.0:
resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
@@ -3581,6 +3599,16 @@ packages:
- ts-node
dev: true
/terser/5.19.4:
resolution: {integrity: sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==}
engines: {node: '>=10'}
hasBin: true
dependencies:
'@jridgewell/source-map': 0.3.5
acorn: 8.9.0
commander: 2.20.3
source-map-support: 0.5.21
/text-table/0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
@@ -3755,7 +3783,7 @@ packages:
'@types/eslint': 8.40.2
eslint: 8.43.0
rollup: 2.79.1
vite: 4.3.9_@types+node@20.3.2
vite: 4.3.9_66pwffvb2axzwdhxmcirxliemu
dev: true
/vite-plugin-svg-icons/2.0.1_vite@4.3.9:
@@ -3771,12 +3799,12 @@ packages:
pathe: 0.2.0
svg-baker: 1.7.0
svgo: 2.8.0
vite: 4.3.9_@types+node@20.3.2
vite: 4.3.9_66pwffvb2axzwdhxmcirxliemu
transitivePeerDependencies:
- supports-color
dev: true
/vite/4.3.9_@types+node@20.3.2:
/vite/4.3.9_66pwffvb2axzwdhxmcirxliemu:
resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
@@ -3805,6 +3833,7 @@ packages:
esbuild: 0.17.19
postcss: 8.4.24
rollup: 3.25.3
terser: 5.19.4
optionalDependencies:
fsevents: 2.3.2