From d5c90af8094bb79c630628083329a3efc05f87a3 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Thu, 8 Oct 2020 10:20:14 +0200 Subject: [PATCH] Allow nodejs build process to use a lower RAM value Signed-off-by: Thomas Citharel --- docs/administration/index.md | 4 ++-- docs/administration/upgrading.md | 5 +++++ js/vue.config.js | 20 ++++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/docs/administration/index.md b/docs/administration/index.md index b8325599..f30ce63c 100644 --- a/docs/administration/index.md +++ b/docs/administration/index.md @@ -77,9 +77,9 @@ yarn install Finally, we can build the front-end (this can take a few seconds). !!! warning - Building front-end can consume up to 512MB of RAM by default. If it's too much or not sufficient for your setup, you can adjust the maximum memory used by prefixing the command with the following option: + Building front-end can consume up to 2048MB of RAM by default. If it's too much or not sufficient for your setup, you can adjust the maximum memory used by prefixing the command with the following option: ``` - NODE_OPTIONS=--max_old_space_size=4096 + NODE_BUILD_MEMORY=1024 ``` ```bash yarn run build diff --git a/docs/administration/upgrading.md b/docs/administration/upgrading.md index 7a0d06ec..2d03cb29 100644 --- a/docs/administration/upgrading.md +++ b/docs/administration/upgrading.md @@ -50,6 +50,11 @@ yarn install ``` ### Rebuild Mobilizon's front-end +!!! warning + Building front-end can consume up to 2048MB of RAM by default. If it's too much or not sufficient for your setup, you can adjust the maximum memory used by prefixing the command with the following option: + ``` + NODE_BUILD_MEMORY=1024 + ``` ```bash yarn run build cd ../ diff --git a/js/vue.config.js b/js/vue.config.js index e1ddbb83..7ed74eb1 100644 --- a/js/vue.config.js +++ b/js/vue.config.js @@ -1,10 +1,30 @@ const path = require("path"); +const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin"); module.exports = { runtimeCompiler: true, lintOnSave: true, filenameHashing: true, outputDir: path.resolve(__dirname, "../priv/static"), + configureWebpack: (config) => { + // Limit the used memory when building + // SourceĀ : https://stackoverflow.com/a/55810460/10204399 + // get a reference to the existing ForkTsCheckerWebpackPlugin + const existingForkTsChecker = config.plugins.filter( + (p) => p instanceof ForkTsCheckerWebpackPlugin + )[0]; + + // remove the existing ForkTsCheckerWebpackPlugin + // so that we can replace it with our modified version + config.plugins = config.plugins.filter((p) => !(p instanceof ForkTsCheckerWebpackPlugin)); + + // copy the options from the original ForkTsCheckerWebpackPlugin + // instance and add the memoryLimit property + const forkTsCheckerOptions = existingForkTsChecker.options; + forkTsCheckerOptions.memoryLimit = process.env.NODE_BUILD_MEMORY || 2048; + + config.plugins.push(new ForkTsCheckerWebpackPlugin(forkTsCheckerOptions)); + }, // configureWebpack: { // optimization: { // splitChunks: {