aboutsummaryrefslogtreecommitdiff
path: root/viewer/src/plugins/devServer.js
diff options
context:
space:
mode:
Diffstat (limited to 'viewer/src/plugins/devServer.js')
-rw-r--r--viewer/src/plugins/devServer.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/viewer/src/plugins/devServer.js b/viewer/src/plugins/devServer.js
new file mode 100644
index 0000000..2cccbbb
--- /dev/null
+++ b/viewer/src/plugins/devServer.js
@@ -0,0 +1,53 @@
1/* ldgallery - A static generator which turns a collection of tagged
2-- pictures into a searchable web gallery.
3--
4-- Copyright (C) 2019-2022 Guillaume FOUET
5--
6-- This program is free software: you can redistribute it and/or modify
7-- it under the terms of the GNU Affero General Public License as
8-- published by the Free Software Foundation, either version 3 of the
9-- License, or (at your option) any later version.
10--
11-- This program is distributed in the hope that it will be useful,
12-- but WITHOUT ANY WARRANTY; without even the implied warranty of
13-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14-- GNU Affero General Public License for more details.
15--
16-- You should have received a copy of the GNU Affero General Public License
17-- along with this program. If not, see <https://www.gnu.org/licenses/>.
18*/
19
20/*
21-- Create a file .env.development.local in the project to customize your DevServer
22-- VUE_APP_DEVSERVER_CONFIG_PATH=<http_url> will use the dev_proxyconfig
23-- VUE_APP_DEVSERVER_CONFIG_PATH=<fs_path> will use the dev_fsconfig
24*/
25
26const devReady = Boolean(process.env.VUE_APP_DEVSERVER_CONFIG_PATH);
27const devIsProxy = devReady && Boolean(process.env.VUE_APP_DEVSERVER_CONFIG_PATH?.match(/^https?:\/\//i));
28const devLocalpath = `^/${process.env.VUE_APP_DATA_URL}`;
29const devProxyconfig = {
30 [devLocalpath]: {
31 target: process.env.VUE_APP_DEVSERVER_CONFIG_PATH,
32 pathRewrite: { [devLocalpath]: '' },
33 },
34};
35
36function devFsConfig(middlewares, devServer) {
37 devServer.app.get(`${devLocalpath}*`, (req, res) => {
38 const fs = require('fs');
39 const url = req.url.slice(process.env.VUE_APP_DATA_URL?.length);
40 const paramIdx = url.indexOf('?');
41 const filepath = paramIdx < 0 ? url : url.substring(0, paramIdx);
42 const fullpath = `${process.env.VUE_APP_DEVSERVER_CONFIG_PATH}${decodeURIComponent(filepath)}`;
43 const file = fs.readFileSync(fullpath);
44 res.end(file);
45 });
46 return middlewares;
47}
48
49module.exports = {
50 port: process.env.VUE_APP_DEVSERVER_PORT,
51 proxy: devReady && devIsProxy ? devProxyconfig : undefined,
52 setupMiddlewares: devReady && !devIsProxy ? devFsConfig : undefined,
53};