From e28ed7ee5cb558ccb1292db5e0c22d1290f27930 Mon Sep 17 00:00:00 2001 From: pkulkark Date: Sun, 20 Sep 2020 17:06:51 +0530 Subject: [PATCH] Allow custom node env variables for plugins This adds a way for tinymce plugins to use custom environment variables. --- cms/envs/common.py | 3 +++ pavelib/assets.py | 9 +++++++-- webpack.dev.config.js | 3 ++- webpack.prod.config.js | 3 ++- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/cms/envs/common.py b/cms/envs/common.py index a9d45cadaac6..06d95a26391a 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -1015,6 +1015,9 @@ ##### EMBARGO ##### EMBARGO_SITE_REDIRECT_URL = None +##### custom vendor plugin variables ##### +ADDITIONAL_NODE_ENV_VARS = {} + ############################### PIPELINE ####################################### PIPELINE = { diff --git a/pavelib/assets.py b/pavelib/assets.py index 52c6cfdbce82..b42d2748bbe5 100644 --- a/pavelib/assets.py +++ b/pavelib/assets.py @@ -5,6 +5,7 @@ import argparse import glob +import json import os import traceback from datetime import datetime @@ -765,10 +766,14 @@ def webpack(options): result = Env.get_django_settings(['STATIC_ROOT', 'WEBPACK_CONFIG_PATH'], "lms", settings=settings) static_root_lms, config_path = result static_root_cms, = Env.get_django_settings(["STATIC_ROOT"], "cms", settings=settings) - environment = 'NODE_ENV={node_env} STATIC_ROOT_LMS={static_root_lms} STATIC_ROOT_CMS={static_root_cms}'.format( + additional_node_env_vars = json.dumps(Env.get_django_settings("ADDITIONAL_NODE_ENV_VARS", "cms", + settings=settings).replace("'", '"')) + environment = 'NODE_ENV={node_env} STATIC_ROOT_LMS={static_root_lms} STATIC_ROOT_CMS={static_root_cms} \ + ADDITIONAL_NODE_ENV_VARS={additional_node_env_vars}'.format( node_env="development" if config_path == 'webpack.dev.config.js' else "production", static_root_lms=static_root_lms, - static_root_cms=static_root_cms + static_root_cms=static_root_cms, + additional_node_env_vars=additional_node_env_vars ) sh( cmd( diff --git a/webpack.dev.config.js b/webpack.dev.config.js index 913d773caca3..fb453977588f 100644 --- a/webpack.dev.config.js +++ b/webpack.dev.config.js @@ -20,7 +20,8 @@ module.exports = _.values(Merge.smart(commonConfig, { debug: true }), new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify('development') + 'process.env.NODE_ENV': JSON.stringify('development'), + 'process.env.ADDITIONAL_NODE_ENV_VARS': JSON.stringify(process.env.ADDITIONAL_NODE_ENV_VARS) }) ], module: { diff --git a/webpack.prod.config.js b/webpack.prod.config.js index 360ab56d4d01..e5fe67ebe8fc 100644 --- a/webpack.prod.config.js +++ b/webpack.prod.config.js @@ -17,7 +17,8 @@ var optimizedConfig = Merge.smart(commonConfig, { devtool: false, plugins: [ new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify('production') + 'process.env.NODE_ENV': JSON.stringify('production'), + 'process.env.ADDITIONAL_NODE_ENV_VARS': JSON.stringify(process.env.ADDITIONAL_NODE_ENV_VARS) }), new webpack.LoaderOptionsPlugin({ // This may not be needed; legacy option for loaders written for webpack 1 minimize: true