Showing
16 changed files
with
71 additions
and
25 deletions
@@ -8,10 +8,8 @@ VITE_DEV_PATH = '/' | @@ -8,10 +8,8 @@ VITE_DEV_PATH = '/' | ||
8 | VITE_PRO_PATH = '/' | 8 | VITE_PRO_PATH = '/' |
9 | 9 | ||
10 | # spa-title | 10 | # spa-title |
11 | -VITE_GLOB_APP_TITLE = GoView | 11 | +VITE_GLOB_APP_TITLE = Large_Desinger |
12 | 12 | ||
13 | # spa shortname | 13 | # spa shortname |
14 | -VITE_GLOB_APP_SHORT_NAME = GoView | ||
15 | - | ||
16 | -# iot platform proxy prefix | ||
17 | -VITE_IOT_PLATFORM_PROXY_PREFIX = /large-designer/ | 14 | +# VITE_GLOB_APP_SHORT_NAME = |
15 | + |
.env.alone.dev
renamed from
.env.independence
.env.alone.prod
0 → 100644
@@ -8,7 +8,7 @@ VITE_GLOB_API_URL = /api | @@ -8,7 +8,7 @@ VITE_GLOB_API_URL = /api | ||
8 | VITE_GLOB_API_URL_PREFIX = /yt | 8 | VITE_GLOB_API_URL_PREFIX = /yt |
9 | 9 | ||
10 | # 内容安全协议 | 10 | # 内容安全协议 |
11 | -VITE_GLOB_CONTENT_SECURITY_POLICY = false | 11 | +VITE_GLOB_CONTENT_SECURITY_POLICY = true |
12 | 12 | ||
13 | # 公共路径 | 13 | # 公共路径 |
14 | -VITE_GLOB_PUBLIC_PATH = / | 14 | +VITE_GLOB_PUBLIC_PATH = /large-designer/ |
@@ -7,7 +7,7 @@ VITE_GLOB_API_URL = /api | @@ -7,7 +7,7 @@ VITE_GLOB_API_URL = /api | ||
7 | VITE_GLOB_API_URL_PREFIX = /yt | 7 | VITE_GLOB_API_URL_PREFIX = /yt |
8 | 8 | ||
9 | # 内容安全协议 | 9 | # 内容安全协议 |
10 | -VITE_GLOB_CONTENT_SECURITY_POLICY = true | 10 | +VITE_GLOB_CONTENT_SECURITY_POLICY = false |
11 | 11 | ||
12 | -# | ||
13 | -VITE_GLOB_PUBLIC_PATH = / | 12 | +# 公共路径 |
13 | +VITE_GLOB_PUBLIC_PATH = /large-designer/ |
1 | import { resolve } from "path" | 1 | import { resolve } from "path" |
2 | import { ConfigEnv } from "vite" | 2 | import { ConfigEnv } from "vite" |
3 | 3 | ||
4 | +export enum ProjectRuntimeEnvEnum { | ||
5 | + DEV = 'development', | ||
6 | + PROD = 'production', | ||
7 | + DEV_ALONE = 'alone.dev', | ||
8 | + PROD_ALONE = 'alone.prod' | ||
9 | +} | ||
10 | + | ||
4 | export function parseEnv(env: ImportMetaEnv) { | 11 | export function parseEnv(env: ImportMetaEnv) { |
5 | const res: Record<string, any> = {} | 12 | const res: Record<string, any> = {} |
6 | 13 | ||
@@ -40,6 +47,6 @@ export function getRootPath(...dir: string[]) { | @@ -40,6 +47,6 @@ export function getRootPath(...dir: string[]) { | ||
40 | } | 47 | } |
41 | 48 | ||
42 | 49 | ||
43 | -export function getPublicPath({ command, mode }: ConfigEnv, viteEnv: ViteEnv) { | ||
44 | - return command === 'build' ? '/' : mode === 'independence' ? viteEnv.VITE_IOT_PLATFORM_PROXY_PREFIX: '/' | 50 | +export function getPublicPath({ command, mode }: ConfigEnv, viteEnv: ViteEnv) { |
51 | + return viteEnv.VITE_GLOB_PUBLIC_PATH | ||
45 | } | 52 | } |
@@ -3,9 +3,9 @@ import { createHtmlPlugin } from 'vite-plugin-html' | @@ -3,9 +3,9 @@ import { createHtmlPlugin } from 'vite-plugin-html' | ||
3 | const GLOB_CONFIG_FILE_NAME = '_app.config.js' | 3 | const GLOB_CONFIG_FILE_NAME = '_app.config.js' |
4 | 4 | ||
5 | export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) { | 5 | export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) { |
6 | - const { VITE_GLOB_APP_TITLE, VITE_GLOB_CONTENT_SECURITY_POLICY, VITE_GLOB_PUBLIC_PATH } = env | 6 | + const { VITE_GLOB_APP_TITLE, VITE_GLOB_PUBLIC_PATH } = env |
7 | const getAppConfigSrc = () => { | 7 | const getAppConfigSrc = () => { |
8 | - const path = VITE_GLOB_PUBLIC_PATH?.endsWith('/') ? VITE_GLOB_PUBLIC_PATH : `${VITE_GLOB_PUBLIC_PATH}` | 8 | + const path = VITE_GLOB_PUBLIC_PATH |
9 | return `${path || '/'}${GLOB_CONFIG_FILE_NAME}?v=${Date.now()}` | 9 | return `${path || '/'}${GLOB_CONFIG_FILE_NAME}?v=${Date.now()}` |
10 | } | 10 | } |
11 | 11 | ||
@@ -14,7 +14,6 @@ export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) { | @@ -14,7 +14,6 @@ export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) { | ||
14 | inject: { | 14 | inject: { |
15 | data: { | 15 | data: { |
16 | title: VITE_GLOB_APP_TITLE, | 16 | title: VITE_GLOB_APP_TITLE, |
17 | - contentSecurityPolicy: VITE_GLOB_CONTENT_SECURITY_POLICY ? `<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />` : '' | ||
18 | }, | 17 | }, |
19 | tags: isBuild ? [ | 18 | tags: isBuild ? [ |
20 | { | 19 | { |
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html lang="zh-cmn-Hans"> | 2 | <html lang="zh-cmn-Hans"> |
3 | 3 | ||
4 | -<head> | ||
5 | - <%- contentSecurityPolicy %> | 4 | +<head> |
6 | <meta charset="UTF-8" /> | 5 | <meta charset="UTF-8" /> |
7 | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> | 6 | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> |
8 | <meta name="renderer" content="webkit" /> | 7 | <meta name="renderer" content="webkit" /> |
@@ -6,9 +6,11 @@ | @@ -6,9 +6,11 @@ | ||
6 | }, | 6 | }, |
7 | "scripts": { | 7 | "scripts": { |
8 | "dev": "vite --host", | 8 | "dev": "vite --host", |
9 | - "dev:proxy": "vite --host --mode independence", | 9 | + "dev:alone": "vite --host --mode alone.dev", |
10 | "build": "vue-tsc --noEmit && vite build", | 10 | "build": "vue-tsc --noEmit && vite build", |
11 | + "build:alone": "vue-tsc --noEmit && vite build --mode alone.prod", | ||
11 | "preview": "vite preview", | 12 | "preview": "vite preview", |
13 | + "preview:alone": "vite preview --mode alone.prod", | ||
12 | "new": "plop --plopfile ./plop/plopfile.js", | 14 | "new": "plop --plopfile ./plop/plopfile.js", |
13 | "postinstall": "husky install", | 15 | "postinstall": "husky install", |
14 | "lint": "eslint --ext .js,.jsx,.ts,.tsx,.vue src", | 16 | "lint": "eslint --ext .js,.jsx,.ts,.tsx,.vue src", |
src/hooks/external/useWebSecurityPolicy.ts
0 → 100644
1 | +import { isBoolean } from "@/utils"; | ||
2 | +import { useGlobSetting } from "./setting"; | ||
3 | + | ||
4 | + | ||
5 | +let initialFlag = false; | ||
6 | +export function useWebSecurityPolicy() { | ||
7 | + if (window && window.document && window.document.documentElement) { | ||
8 | + const { securityPolicy } = useGlobSetting(); | ||
9 | + const flag = isBoolean(securityPolicy) ? securityPolicy : securityPolicy === 'true' | ||
10 | + if (flag && !initialFlag) { | ||
11 | + const meta = document.createElement('meta'); | ||
12 | + meta.setAttribute('http-equiv', 'Content-Security-Policy'); | ||
13 | + meta.setAttribute('content', 'upgrade-insecure-requests'); | ||
14 | + const container = document.querySelector('head'); | ||
15 | + container?.prepend(meta); | ||
16 | + initialFlag = true; | ||
17 | + } | ||
18 | + } | ||
19 | +} |
@@ -13,8 +13,12 @@ import '@/styles/pages/index.scss' | @@ -13,8 +13,12 @@ import '@/styles/pages/index.scss' | ||
13 | import 'animate.css/animate.min.css' | 13 | import 'animate.css/animate.min.css' |
14 | // 引入标尺 | 14 | // 引入标尺 |
15 | import 'vue3-sketch-ruler/lib/style.css' | 15 | import 'vue3-sketch-ruler/lib/style.css' |
16 | +import { useWebSecurityPolicy } from './hooks/external/useWebSecurityPolicy' | ||
16 | 17 | ||
17 | async function appInit() { | 18 | async function appInit() { |
19 | + // THINGS_KIT 内容安全协议hook | ||
20 | + useWebSecurityPolicy() | ||
21 | + | ||
18 | const goAppProvider = createApp(GoAppProvider) | 22 | const goAppProvider = createApp(GoAppProvider) |
19 | 23 | ||
20 | const app = createApp(App) | 24 | const app = createApp(App) |
@@ -10,7 +10,7 @@ const isIndependenceMode = import.meta.env.MODE === RuntimeEnvironment.INDEPENDE | @@ -10,7 +10,7 @@ const isIndependenceMode = import.meta.env.MODE === RuntimeEnvironment.INDEPENDE | ||
10 | 10 | ||
11 | const toIotPlatformLogin = () => { | 11 | const toIotPlatformLogin = () => { |
12 | const { origin } = window.location | 12 | const { origin } = window.location |
13 | - window.location.replace(`${origin}/login?redirect=${import.meta.env.VITE_IOT_PLATFORM_PROXY_PREFIX}`) | 13 | + window.location.replace(`${origin}/login?redirect=${import.meta.env.VITE_GLOB_PUBLIC_PATH}`) |
14 | } | 14 | } |
15 | 15 | ||
16 | export function createPermissionGuard(router: Router) { | 16 | export function createPermissionGuard(router: Router) { |
@@ -12,10 +12,10 @@ declare interface GlobEnvConfig { | @@ -12,10 +12,10 @@ declare interface GlobEnvConfig { | ||
12 | 12 | ||
13 | VITE_GLOB_APP_SHORT_NAME: string | 13 | VITE_GLOB_APP_SHORT_NAME: string |
14 | } | 14 | } |
15 | - | 15 | + |
16 | 16 | ||
17 | declare type GlobConfig = { | 17 | declare type GlobConfig = { |
18 | - | 18 | + |
19 | } | 19 | } |
20 | 20 | ||
21 | declare interface ViteEnv extends GlobEnvConfig { | 21 | declare interface ViteEnv extends GlobEnvConfig { |
@@ -25,8 +25,6 @@ declare interface ViteEnv extends GlobEnvConfig { | @@ -25,8 +25,6 @@ declare interface ViteEnv extends GlobEnvConfig { | ||
25 | VITE_DEV_PATH: string | 25 | VITE_DEV_PATH: string |
26 | // 生产地址 | 26 | // 生产地址 |
27 | VITE_PRO_PATH: string | 27 | VITE_PRO_PATH: string |
28 | - // iot platform proxy prefix | ||
29 | - VITE_IOT_PLATFORM_PROXY_PREFIX: string | ||
30 | } | 28 | } |
31 | 29 | ||
32 | interface ImportMetaEnv extends ViteEnv { | 30 | interface ImportMetaEnv extends ViteEnv { |
@@ -17,7 +17,7 @@ export default defineConfig(({ mode, command }) => { | @@ -17,7 +17,7 @@ export default defineConfig(({ mode, command }) => { | ||
17 | 17 | ||
18 | const root = process.cwd() | 18 | const root = process.cwd() |
19 | 19 | ||
20 | - const env = loadEnv(mode, root) | 20 | + const env = loadEnv(mode, root) |
21 | 21 | ||
22 | const viteEnv = parseEnv(env) | 22 | const viteEnv = parseEnv(env) |
23 | 23 | ||
@@ -91,6 +91,6 @@ export default defineConfig(({ mode, command }) => { | @@ -91,6 +91,6 @@ export default defineConfig(({ mode, command }) => { | ||
91 | server: { | 91 | server: { |
92 | port: 5555, | 92 | port: 5555, |
93 | proxy: createProxy(viteEnv), | 93 | proxy: createProxy(viteEnv), |
94 | - }, | 94 | + }, |
95 | } | 95 | } |
96 | }) | 96 | }) |
windi.config.ts
0 → 100644