Skip to content
Snippets Groups Projects
Commit 1b23f950 authored by Sebastien DUMETZ's avatar Sebastien DUMETZ
Browse files

speed up build process by importing voyager build script into source/ui

use legacy-peer-deps for voyager until https://github.com/Smithsonian/dpo-voyager/pull/243 is merged

fix build scripts to properly skip voyager standalone build
parent 0207f0d5
Branches
No related tags found
No related merge requests found
...@@ -17,11 +17,9 @@ jobs: ...@@ -17,11 +17,9 @@ jobs:
node-version: 16 node-version: 16
cache: 'npm' cache: 'npm'
- name: install voyager dependencies - name: install voyager dependencies
run: (cd source/voyager && npm ci) run: (cd source/voyager && npm ci --legacy-peer-deps)
- name: install ui dependencies - name: install ui dependencies
run: npm ci && (cd source/ui && npm ci) run: npm ci && (cd source/ui && npm ci)
- name: build voyager
run: npm run build-voyager
- name: build UI - name: build UI
run: npm run build-ui run: npm run build-ui
build-server: build-server:
......
...@@ -7,7 +7,7 @@ COPY source/server/package*.json /app/source/server/ ...@@ -7,7 +7,7 @@ COPY source/server/package*.json /app/source/server/
RUN (cd /app/source/server && npm ci) RUN (cd /app/source/server && npm ci)
COPY source/voyager/package*.json /app/source/voyager/ COPY source/voyager/package*.json /app/source/voyager/
RUN (cd /app/source/voyager && npm ci) RUN (cd /app/source/voyager && npm ci --legacy-peer-deps)
COPY source/ui/package*.json /app/source/ui/ COPY source/ui/package*.json /app/source/ui/
RUN (cd /app/source/ui && npm ci) RUN (cd /app/source/ui && npm ci)
...@@ -21,9 +21,6 @@ RUN npm run build-server ...@@ -21,9 +21,6 @@ RUN npm run build-server
# outputs files in /app/source/server/dist # outputs files in /app/source/server/dist
COPY source/voyager /app/source/voyager COPY source/voyager /app/source/voyager
RUN npm run build-voyager
# files are automatically picked up by build-ui
COPY source/ui /app/source/ui COPY source/ui /app/source/ui
RUN npm run build-ui RUN npm run build-ui
# outputs files in /app/dist # outputs files in /app/dist
......
# eCorpus
## Description
This is the code repository for **eCorpus**, a content management system by the [eThesaurus](https://ethesaurus.holusion.com) consortium.
## Installation
Follow the [Quick Start Guide](https://ethesaurus.holusion.com/en/doc/tutorials/deployment.html).
## Repository structure
The repository uses recursive [submodules](https://git-scm.com/docs/gitsubmodules), because the upstream [DPO-Voyager](https://github.com/) uses them.
It means some commands will need to be run with the `--recurse-submodules` flag, or you will need to run `git submodule update --init --recursive` after cloning the repository.
eg: `git clone --recurse-submodules git@github.com:Holusion/eCorpus`
Day-to-day operations can be simplified by configuring git (globally or for thsi repository) to always recurse by default : `git config submodule.recurse true`.
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"build-ui": "cd source/ui && webpack --mode=production", "build-ui": "cd source/ui && webpack --mode=production",
"build-server": "tsc -b source/server", "build-server": "tsc -b source/server",
"build-voyager": "cd source/voyager/source/client; webpack --mode=production --env=app=all",
"watch": "cd source/server && HOT_RELOAD=1 NODE_ENV=development ROOT_DIR=\"../../\" nodemon -e ts,js -w . -w ../ui/webpack.config.js -x ts-node index.ts" "watch": "cd source/server && HOT_RELOAD=1 NODE_ENV=development ROOT_DIR=\"../../\" nodemon -e ts,js -w . -w ../ui/webpack.config.js -x ts-node index.ts"
}, },
"author": "Holusion <contact@holusion.com>", "author": "Holusion <contact@holusion.com>",
......
<voyager-explorer resourceroot="/dist/" root="/scenes/{{scene}}/" referrer="{{referrer}}" lang="{{lang}}"></voyager-explorer> <voyager-explorer resourceroot="/dist/" root="/scenes/{{scene}}/" referrer="{{referrer}}" lang="{{lang}}"></voyager-explorer>
<script type="text/javascript" src="/dist/js/voyager-explorer.min.js"></script> <script type="text/javascript" src="/dist/js/voyager-explorer.js"></script>
<voyager-story resourceRoot="/dist/" root="/scenes/{{scene}}/" referrer="{{referrer}}" lang="{{lang}}" mode="{{mode}}"></voyager-story> <voyager-story resourceRoot="/dist/" root="/scenes/{{scene}}/" referrer="{{referrer}}" lang="{{lang}}" mode="{{mode}}"></voyager-story>
<script type="text/javascript" src="/dist/js/voyager-story.min.js"></script> <script type="text/javascript" src="/dist/js/voyager-story.js"></script>
<link rel="stylesheet" href="/dist/css/voyager-story.min.css"> <link rel="stylesheet" href="/dist/css/voyager-story.css">
\ No newline at end of file \ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{title}}</title>
<link rel="shortcut icon" type="image/png" href="/static/favicon.png"/>
<style>
body{
background: #303030;
}
</style>
</head>
<body>
{{{element}}}
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{title}}</title>
<link rel="shortcut icon" type="image/png" href="/images/logo-ecorpus.png"/>
<link href="/fonts/fonts.css" rel="stylesheet">
<style>
body { background: #303030; }
</style>
{{#if isDevelopment}}
<script src="/libs/three/three.js"></script>
{{else}}
<script src="/libs/three/three.min.js"></script>
{{/if}}
<style>
/* overrides */
.sv-asset-panel .sv-panel-header{
display: none;
}
</style>
</head>
<body>
{{{element}}}
</body>
</html>
\ No newline at end of file
...@@ -42,16 +42,16 @@ const dirs = { ...@@ -42,16 +42,16 @@ const dirs = {
assets: path.resolve( project, "source/ui/assets"), assets: path.resolve( project, "source/ui/assets"),
}; };
const createVoyagerConfig = require(path.join(project, "source/voyager/source/client/webpack.config.js"));
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
module.exports = function createAppConfig(env, argv) module.exports = function createAppConfig(env, argv={})
{ {
const isDevMode = (typeof argv?.mode !== "undefined") ? argv.mode !== "production" : process.env["NODE_ENV"] !== "production"; const isDevMode = (typeof argv?.mode !== "undefined") ? argv.mode !== "production" : process.env["NODE_ENV"] !== "production";
const devMode = isDevMode ? "development" : "production"; const devMode = isDevMode ? "development" : "production";
const config = { const config = {
mode: devMode, mode: devMode,
cache: {type: "filesystem"}, cache: {type: "filesystem"},
...@@ -64,7 +64,7 @@ module.exports = function createAppConfig(env, argv) ...@@ -64,7 +64,7 @@ module.exports = function createAppConfig(env, argv)
filename: "js/[name].js", filename: "js/[name].js",
publicPath: '/', publicPath: '/',
clean: true, clean: false,
}, },
resolve: { resolve: {
...@@ -98,7 +98,7 @@ module.exports = function createAppConfig(env, argv) ...@@ -98,7 +98,7 @@ module.exports = function createAppConfig(env, argv)
}, },
{ {
from: "{js,js/draco,css,language,images}/*.{js,json,wasm,css,jpg,png,svg}", from: "{js,js/draco,css,language,images}/*.{js,json,wasm,css,jpg,png,svg}",
context: path.join(project, "source/voyager/dist/"), context: path.join(project, "source/voyager/assets/"),
force: false, force: false,
priority: 1, priority: 1,
}, },
...@@ -161,5 +161,32 @@ module.exports = function createAppConfig(env, argv) ...@@ -161,5 +161,32 @@ module.exports = function createAppConfig(env, argv)
config.devtool = "source-map"; config.devtool = "source-map";
} }
return config; const voyagerConfig = createVoyagerConfig({app: "all"}, argv);
/********************************
* Override voyagerConfig's options
********************************/
//Always use the same file name
Object.assign(voyagerConfig.output, {
path: dirs.output,
clean: false,
filename: "js/[name].js",
});
//Remove HTML exports
voyagerConfig.plugins = voyagerConfig.plugins.filter(p=>p.constructor?.name !="HtmlWebpackPlugin");
//Remove Copy Plugin
voyagerConfig.plugins = voyagerConfig.plugins.filter(p=>p.constructor?.name !="CopyPlugin");
const cssPlugin = voyagerConfig.plugins.find(p=>p.constructor?.name =="MiniCssExtractPlugin");
if(!cssPlugin) throw new Error("MiniCssExtractPlugin not found in voyagerConfig.plugins");
Object.assign(cssPlugin.options, {
filename: "css/[name].css",
chunkFilename: "css/[name].css",
});
//Use filesystem cache for faster initial builds
Object.assign(voyagerConfig, {cache: {type: "filesystem"}});
return [config, voyagerConfig];
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment