diff --git a/.gitignore b/.gitignore index 90a0431fd..b68165511 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ node_modules build dist +app/packages/web/public + # misc .DS_Store .env.local diff --git a/app/package.json b/app/package.json index b70b7e738..36b9526e9 100644 --- a/app/package.json +++ b/app/package.json @@ -68,10 +68,10 @@ "start": "cross-env ELECTRON_START_URL=http://localhost:5000 electron .", "start:local": "cross-env electron .", "dist": "electron-builder", - "build": "cd ../packages/api && yarn build && cd ../web && yarn build:app && cd ../../app && yarn dist", - "build:local": "cd ../packages/api && yarn build && cd ../web && yarn build:app && cd ../../app && yarn predist", + "build": "cd ../packages/api && yarn build && cd ../web && yarn build && cd ../../app && yarn dist", + "build:local": "cd ../packages/api && yarn build && cd ../web && yarn build && cd ../../app && yarn predist", "postinstall": "electron-builder install-app-deps", - "predist": "copyfiles ../packages/api/dist/* packages && copyfiles \"../packages/web/build/*\" packages && copyfiles \"../packages/web/build/**/*\" packages" + "predist": "copyfiles ../packages/api/dist/* packages && copyfiles \"../packages/web/public/*\" packages && copyfiles \"../packages/web/public/**/*\" packages" }, "main": "src/electron.js", "devDependencies": { diff --git a/app/src/electron.js b/app/src/electron.js index 0fd79a5bd..933383cde 100644 --- a/app/src/electron.js +++ b/app/src/electron.js @@ -169,7 +169,7 @@ function createWindow() { const startUrl = process.env.ELECTRON_START_URL || url.format({ - pathname: path.join(__dirname, '../packages/web/build/index.html'), + pathname: path.join(__dirname, '../packages/web/public/index.html'), protocol: 'file:', slashes: true, }); diff --git a/package.json b/package.json index f68d608f8..ad23104c9 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "build:lib": "yarn build:tools && yarn build:sqltree && yarn build:filterparser && yarn build:datalib", "build:app": "cd app && yarn install && yarn build", "build:api": "yarn workspace dbgate-api build", - "build:web:docker": "yarn workspace dbgate-web build:docker", + "build:web:docker": "yarn workspace dbgate-web build", "build:app:local": "cd app && yarn build:local", "start:app:local": "cd app && yarn start:local", "setCurrentVersion": "node setCurrentVersion", @@ -29,7 +29,7 @@ "fillNativeModules": "node fillNativeModules", "fillNativeModulesElectron": "node fillNativeModules --eletron", "prettier": "prettier --write packages/api/src && prettier --write packages/datalib/src && prettier --write packages/filterparser/src && prettier --write packages/sqltree/src && prettier --write packages/tools/src && prettier --write packages/types && prettier --write packages/web/src && prettier --write app/src", - "copy:docker:build": "copyfiles packages/api/dist/* docker -f && copyfiles packages/web/build/* docker -u 2 && copyfiles \"packages/web/build/**/*\" docker -u 2", + "copy:docker:build": "copyfiles packages/api/dist/* docker -f && copyfiles packages/web/public/* docker -u 2 && copyfiles \"packages/web/public/**/*\" docker -u 2", "prepare:docker": "yarn build:web:docker && yarn build:api && yarn copy:docker:build", "prepare": "yarn build:lib", "start": "concurrently --kill-others-on-fail \"yarn start:api\" \"yarn start:web\"", diff --git a/packages/web/package.json b/packages/web/package.json index 0ca9ab031..868b71b53 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -2,8 +2,8 @@ "name": "dbgate-web", "version": "1.0.0", "scripts": { - "build": "rollup -c", - "dev": "rollup -c -w", + "build": "cross-env API_URL=ORIGIN rollup -c", + "dev": "cross-env API_URL=http://localhost:3000 rollup -c -w", "start": "sirv public", "validate": "svelte-check" }, @@ -11,10 +11,12 @@ "@ant-design/colors": "^5.0.0", "@rollup/plugin-commonjs": "^17.0.0", "@rollup/plugin-node-resolve": "^11.0.0", + "@rollup/plugin-replace": "^2.4.1", "@rollup/plugin-typescript": "^6.0.0", "@tsconfig/svelte": "^1.0.0", "ace-builds": "^1.4.8", "chart.js": "^2.9.4", + "cross-env": "^7.0.3", "dbgate-datalib": "^3.9.5", "dbgate-sqltree": "^3.9.5", "dbgate-tools": "^3.9.5", diff --git a/packages/web/public/index.html b/packages/web/public/index.html index bf1d547fc..55ed2489f 100644 --- a/packages/web/public/index.html +++ b/packages/web/public/index.html @@ -10,17 +10,17 @@ - - + + - - - - - - + + + + + + - +
diff --git a/packages/web/public/unknown.svg b/packages/web/public/unknown.svg new file mode 100644 index 000000000..ff30dd8cf --- /dev/null +++ b/packages/web/public/unknown.svg @@ -0,0 +1,15 @@ + + + \ No newline at end of file diff --git a/packages/web/rollup.config.js b/packages/web/rollup.config.js index bf35f51d8..bd142e58f 100644 --- a/packages/web/rollup.config.js +++ b/packages/web/rollup.config.js @@ -6,6 +6,7 @@ import copy from 'rollup-plugin-copy'; import { terser } from 'rollup-plugin-terser'; import sveltePreprocess from 'svelte-preprocess'; import typescript from '@rollup/plugin-typescript'; +import replace from '@rollup/plugin-replace'; import css from 'rollup-plugin-css-only'; const production = !process.env.ROLLUP_WATCH; @@ -43,16 +44,18 @@ export default { copy({ targets: [ { - src: - '../../node_modules/@mdi/font/css/materialdesignicons.css', + src: '../../node_modules/@mdi/font/css/materialdesignicons.css', dest: 'public/build/fonts/', }, { - src: - '../../node_modules/@mdi/font/fonts/*', - dest: 'public/build/fonts/', - }, - ], + src: '../../node_modules/@mdi/font/fonts/*', + dest: 'public/build/fonts/', + }, + ], + }), + + replace({ + 'process.env.API_URL': JSON.stringify(process.env.API_URL), }), svelte({ diff --git a/packages/web/src/plugins/manifestExtractors.ts b/packages/web/src/plugins/manifestExtractors.ts index 32f62ef65..aa51184df 100644 --- a/packages/web/src/plugins/manifestExtractors.ts +++ b/packages/web/src/plugins/manifestExtractors.ts @@ -12,8 +12,7 @@ export function extractPluginIcon(packageManifest) { return `https://raw.githubusercontent.com/${match[1]}/${match[2]}/master/icon.svg`; } } - // eslint-disable-next-line no-undef - return `${process.env.PUBLIC_URL}/unknown.svg`; + return 'unknown.svg'; } export function extractPluginAuthor(packageManifest) { diff --git a/packages/web/src/utility/resolveApi.ts b/packages/web/src/utility/resolveApi.ts index 1005e664e..10f6c3f0c 100644 --- a/packages/web/src/utility/resolveApi.ts +++ b/packages/web/src/utility/resolveApi.ts @@ -1,3 +1,8 @@ +let apiUrl = null; +try { + apiUrl = process.env.API_URL; +} catch {} + export default function resolveApi() { if (window['require']) { const electron = window['require']('electron'); @@ -10,12 +15,8 @@ export default function resolveApi() { } } - // // eslint-disable-next-line - // const apiUrl = process.env.REACT_APP_API_URL; - // if (apiUrl) { - // if (apiUrl == 'ORIGIN') return window.location.origin; - // return apiUrl; - // } - - return 'http://localhost:3000'; + if (apiUrl) { + return apiUrl; + } + return window.location.origin; } diff --git a/yarn.lock b/yarn.lock index 552941475..6eb4f92e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -386,6 +386,14 @@ is-module "^1.0.0" resolve "^1.19.0" +"@rollup/plugin-replace@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.1.tgz#c411b5ab72809fb1bfc8b487d8d02eef661460d3" + integrity sha512-XwC1oK5rrtRJ0tn1ioLHS6OV5JTluJF7QE1J/q1hN3bquwjnVxjtMyY9iCnoyH9DQbf92CxajB3o98wZbP3oAQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + "@rollup/plugin-typescript@^6.0.0": version "6.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-6.1.0.tgz#289e7f0ea12fd659bd13ad59dda73b9055538b83" @@ -1955,6 +1963,13 @@ cross-env@^6.0.3: dependencies: cross-spawn "^7.0.0" +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -1984,6 +1999,15 @@ cross-spawn@^7.0.0: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"