提交 3c13916a 编写于 作者: P Peter Pan

build: build frontend from source code

上级 9bc69c4a
......@@ -61,7 +61,6 @@ yarn
[server](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/server/README.md)
[serverless](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/serverless/README.md)
[cli](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/cli/README.md)
[app](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/app/README.md)
[i18n](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/i18n/README.md)
[wasm](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/wasm/README.md)
[mock](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/mock/README.md)
......
......@@ -61,7 +61,6 @@ yarn
[server](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/server/README.md)
[serverless](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/serverless/README.md)
[cli](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/cli/README.md)
[app](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/app/README.md)
[i18n](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/i18n/README.md)
[wasm](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/wasm/README.md)
[mock](https://github.com/PaddlePaddle/VisualDL/blob/develop/frontend/packages/mock/README.md)
......
../../../LICENSE
\ No newline at end of file
# VisualDL FrontEnd APP
UNDER DEVELOPMENT
appId: org.paddlepaddle.visualdl
productName: VisualDL
files:
- 'index.js'
- 'resources/**/*'
directories:
buildResources: ./resources
mac:
category: public.app-category.developer-tools
darkModeSupport: false
hardenedRuntime: true
gatekeeperAssess: false
target:
- zip
win:
target:
- nsis
verifyUpdateCodeSignature: false
linux:
target:
- AppImage
nsis:
perMachine: true
publish: null
/* eslint-disable no-console */
/* eslint-disable @typescript-eslint/no-var-requires */
const path = require('path');
const http = require('http');
const {app, BrowserWindow, screen, nativeImage} = require('electron');
const pm2 = require('pm2');
const host = 'localhost';
async function getPort() {
return new Promise((resolve, reject) => {
const server = http.createServer();
server.listen(0);
server.on('listening', () => {
resolve(server.address().port);
server.close();
});
server.on('error', reject);
});
}
async function createWindow() {
const {width, height} = screen.getPrimaryDisplay().workAreaSize;
const win = new BrowserWindow({
minWidth: 800,
minHeight: 600,
width,
height,
icon: nativeImage.createFromPath(path.join(__dirname, 'resources/icon.png')),
webPreferences: {
devTools: false,
nodeIntegration: true
},
show: false
});
win.once('ready-to-show', () => {
win.show();
});
return win;
}
function startServer({port, host}) {
return new Promise((resolve, reject) => {
pm2.connect(err => {
if (err) {
reject(err);
}
const app = require('@visualdl/server/ecosystem.config').apps[0];
pm2.start(
{
...app,
instances: 1,
env: {
...app.env,
HOST: host,
PORT: port,
BACKEND: 'http://127.0.0.1:8040'
}
},
err => {
pm2.disconnect();
if (err) {
reject(err);
} else {
console.log(`Server listening at http://${host}:${port}`);
resolve();
}
}
);
});
});
}
function stopServer() {
return new Promise((resolve, reject) => {
pm2.connect(err => {
if (err) {
reject(err);
}
pm2.killDaemon(err => {
pm2.disconnect();
if (err) {
reject(err);
} else {
console.log('Server stopped');
resolve();
}
});
});
});
}
app.on('ready', async () => {
let port = 0;
try {
port = await getPort();
await startServer({port, host});
} catch (e) {
console.error(e);
app.exit(1);
return;
}
try {
const win = await createWindow();
win.loadURL(`http://${host}:${port}`);
} catch (e) {
console.error(e);
app.exit(1);
}
});
// app.on('activate', async () => {
// if (BrowserWindow.getAllWindows().length === 0) {
// try {
// await createWindow();
// } catch (e) {
// console.error(e);
// app.exit(1);
// }
// }
// });
// Quit when all windows are closed.
app.on('window-all-closed', () => {
app.quit();
// if (process.platform !== 'darwin') {
// app.quit();
// }
});
app.on('will-quit', async event => {
event.preventDefault();
try {
await stopServer();
app.exit(0);
} catch (e) {
console.error(e);
app.exit(1);
}
});
{
"name": "@visualdl/app",
"version": "2.0.0-beta.38",
"private": true,
"description": "A platform to visualize the deep learning process and result.",
"keywords": [
"visualdl",
"paddlepaddle",
"visualization",
"deep learning"
],
"homepage": "https://github.com/PaddlePaddle/VisualDL",
"bugs": {
"url": "https://github.com/PaddlePaddle/VisualDL/issues"
},
"license": "Apache-2.0",
"author": "PeterPanZH <littlepanzh@gmail.com> (https://github.com/PeterPanZH)",
"contributors": [
"Niandalu <littlepanzh@gmail.com> (https://github.com/Niandalu)"
],
"repository": {
"type": "git",
"url": "https://github.com/PaddlePaddle/VisualDL.git",
"directory": "frontend/packages/app"
},
"scripts": {
"dev": "electron index.js",
"build": "electron-builder -mwl",
"test": "echo \"Error: no test specified\" && exit 0"
},
"dependencies": {
"@visualdl/server": "2.0.0-beta.38",
"pm2": "4.4.0"
},
"devDependencies": {
"electron": "8.2.5",
"electron-builder": "22.6.0"
},
"engines": {
"node": ">=10",
"npm": ">=6"
},
"publishConfig": {
"access": "public"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
}
}
<svg height="31" viewBox="0 0 50 31" width="50" xmlns="http://www.w3.org/2000/svg"><g fill="#fff" fill-rule="evenodd" transform="translate(0 .0625)"><path d="m2.446115.0742695c-1.32588958 0-2.40434375 1.0740707-2.40434375 2.39411403s1.07845417 2.39382156 2.40434375 2.39382156 2.40434375-1.07377823 2.40434375-2.39382156-1.07845417-2.39411403-2.40434375-2.39411403" transform="translate(23.010417 .023203)"/><path d="m.23204292 23.3006269h3.46595625c.06922708 0 .13199166-.0401668.16068125-.1029517l10.45446458-22.89241762c.0531687-.1163081-.0322146-.24831243-.1605833-.24831243h-3.4659563c-.0691292 0-.1318937.04026424-.1605833.10295168l-10.45456252 22.89241757c-.05307083.1163081.0323125.2483125.16058334.2483125" transform="translate(24.0875 6.652667)"/><path d="m2.48757292.0742695c-1.32588959 0-2.40434375 1.0740707-2.40434375 2.39411403s1.07845416 2.39382156 2.40434375 2.39382156c1.32588958 0 2.40434375-1.07377823 2.40434375-2.39382156s-1.07845417-2.39411403-2.40434375-2.39411403" transform="translate(43.866667 .023203)"/><path d="m17.4206283.05694515h-3.4659562c-.0691292 0-.1318938.04026424-.1605834.10304917l-4.08253745 8.93954011h-8.13765833c-.1075125 0-.2050375.06278493-.24900209.16047204l-1.31139791 2.91052983c-.04513959.1002219.02849375.2135077.13884583.2135077h8.05922708l-4.87203958 10.6682704c-.05307083.1163081.0323125.2483125.16058333.2483125h3.46595625c.06922709 0 .13199167-.0401668.16058334-.1029517l10.45456253-22.89241762c.0531687-.1163081-.0322146-.24831243-.1605834-.24831243" transform="translate(0 6.652667)"/><path d="m29.3354319 12.1665001c-.3381063-2.99856519-2.8049209-5.35027016-5.8800917-5.45507419-.0279062-.00107241-.0550292.00302226-.0813687.00887179-.0140021-.0049721-.0284938-.00887179-.0441605-.00887179h-2.1002145c-.0522875 0-.0995813.03032005-.121123.07779872l-1.2130895 2.67576877c-.0396563.08754793.0247729.18679491.1211229.18679491h2.1414375c.4538437-.00653197.7861729.02330061 1.1568854.08062598 1.7253896.26693343 2.7979687 1.52672661 2.7732937 3.19686421-.0235 1.5783974-1.3395979 2.8354608-2.9250645 2.8354608h-7.669225c-.1306209 0-.2491.0760439-.3029542.1943018l-1.2729167 2.7896396c-.0615896.1347341.0376.2880892.1863354.2880892h8.9637813c3.7159375 0 6.6818333-3.1934519 6.2673521-6.8702698"/><path d="m50.1567746 12.1665001c-.3381063-2.99856519-2.8049209-5.35027016-5.8801896-5.45507419-.0279063-.00107241-.0549313.00302226-.0813688.00887179-.0139041-.0049721-.0283958-.00887179-.0440625-.00887179h-2.1003125c-.0521895 0-.0995812.03032005-.1211229.07779872l-1.2130896 2.67576877c-.0395583.08754793.024675.18679491.1212209.18679491h2.1413396c.4539416-.00653197.7862708.02330061 1.1569833.08062598 1.7252917.26693343 2.7978708 1.52672661 2.7731958 3.19686421-.0235 1.5783974-1.3395979 2.8354608-2.9250646 2.8354608h-7.669127c-.1306209 0-.2491.0760439-.3030521.1943018l-1.2729167 2.7896396c-.0614916.1347341.0376979.2880892.1863354.2880892h8.9638792c3.7158396 0 6.6817354-3.1934519 6.2673521-6.8702698"/></g></svg>
\ No newline at end of file
......@@ -59,5 +59,5 @@
"pre-commit": "lint-staged"
}
},
"gitHead": "24f28bc4cca3d5fae2d1131730978c5f81e4566c"
"gitHead": "9bc69c4af2e8c1bbd5f38001e8b143fd8b008396"
}
......@@ -94,5 +94,5 @@
"pre-commit": "lint-staged"
}
},
"gitHead": "24f28bc4cca3d5fae2d1131730978c5f81e4566c"
"gitHead": "9bc69c4af2e8c1bbd5f38001e8b143fd8b008396"
}
......@@ -73,5 +73,5 @@
"pre-commit": "lint-staged"
}
},
"gitHead": "24f28bc4cca3d5fae2d1131730978c5f81e4566c"
"gitHead": "9bc69c4af2e8c1bbd5f38001e8b143fd8b008396"
}
......@@ -56,5 +56,5 @@
"pre-commit": "lint-staged"
}
},
"gitHead": "24f28bc4cca3d5fae2d1131730978c5f81e4566c"
"gitHead": "9bc69c4af2e8c1bbd5f38001e8b143fd8b008396"
}
......@@ -72,5 +72,5 @@
"pre-commit": "lint-staged"
}
},
"gitHead": "24f28bc4cca3d5fae2d1131730978c5f81e4566c"
"gitHead": "9bc69c4af2e8c1bbd5f38001e8b143fd8b008396"
}
......@@ -51,5 +51,5 @@
"pre-commit": "lint-staged"
}
},
"gitHead": "24f28bc4cca3d5fae2d1131730978c5f81e4566c"
"gitHead": "9bc69c4af2e8c1bbd5f38001e8b143fd8b008396"
}
......@@ -49,5 +49,5 @@
"pre-commit": "lint-staged"
}
},
"gitHead": "24f28bc4cca3d5fae2d1131730978c5f81e4566c"
"gitHead": "9bc69c4af2e8c1bbd5f38001e8b143fd8b008396"
}
......@@ -21,8 +21,6 @@ elif [ "$SCOPE" = "server" ]; then
npx lerna run --scope "@visualdl/server" --include-dependencies build
elif [ "$SCOPE" = "cli" ]; then
npx lerna run --scope "@visualdl/cli" --include-dependencies build
elif [ "$SCOPE" = "app" ]; then
npx lerna run --scope "@visualdl/app" --include-dependencies build
else
npx lerna run build
fi
......
......@@ -18,25 +18,6 @@ fi
# fi
# wine
if hash apt 2>/dev/null; then
SYSTEM=$(uname -s);
if [ "$SYSTEM" = "Linux" ]; then
sudo dpkg --add-architecture i386
wget -nc https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/Release.key
sudo apt-key add Release.key
sudo apt-add-repository 'deb https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/ ./'
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'
sudo apt update
sudo apt install --install-recommends winehq-stable
fi
fi
# yarn
if ! hash yarn 2>/dev/null; then
curl --compressed -o- -L https://yarnpkg.com/install.sh | bash
......
......@@ -11,27 +11,17 @@ build_frontend_fake() {
mkdir -p "$BUILD_DIR/package/dist"
}
build_frontend_from_source() {
build_frontend() {
mkdir -p "$BUILD_DIR/package/dist"
cd "$FRONTEND_DIR"
./scripts/install.sh
SCOPE="serverless" ./scripts/install.sh
SCOPE="serverless" PUBLIC_PATH="/{{PUBLIC_PATH}}" API_URL="/{{PUBLIC_PATH}}/api" ./scripts/build.sh
# extract
tar zxf "$FRONTEND_DIR/output/serverless.tar.gz" -C "$BUILD_DIR/package/dist"
}
build_frontend() {
mkdir -p "$BUILD_DIR/package/dist"
cd "$FRONTEND_DIR/packages/serverless"
npm install --no-package-lock
npm run build
cp -a "$FRONTEND_DIR/packages/serverless/dist/." "$BUILD_DIR/package/dist/"
}
clean_env() {
rm -rf "$TOP_DIR/visualdl/server/dist"
rm -rf "$BUILD_DIR/bdist*"
......@@ -52,11 +42,6 @@ clean_env
if [[ "$ARG" = "travis-CI" ]]; then
build_frontend_fake
elif [[ "$ARG" = "from-source" ]]; then
build_frontend_from_source
elif [[ "$ARG" = "no-build" ]]; then
build_frontend_fake
echo "skipping build frontend"
else
build_frontend
fi
......
......@@ -31,7 +31,6 @@ TOP_DIR = os.path.realpath(os.path.dirname(__file__))
PYTHON_SDK_DIR = os.path.join(TOP_DIR, 'visualdl/python')
BUILD_DIR = os.path.join(TOP_DIR, 'build')
MODE = os.environ.get('VS_BUILD_MODE', 'RELEASE')
FRONTEND = os.environ.get('BUILD_FRONTEND')
def read(name):
......@@ -84,10 +83,6 @@ class build_py(setuptools.command.build_py.build_py):
env = dict(os.environ)
if MODE == "travis-CI":
cmd.append('travis-CI')
elif FRONTEND == "source":
cmd.append('from-source')
elif FRONTEND == "none":
cmd.append('no-build')
if sys.version_info[0] >= 3:
env["WITH_PYTHON3"] = "ON"
subprocess.check_call(cmd, env=env)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册