diff --git a/.eslintrc.js b/.eslintrc.js index 43df39713..ea7493b8c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,7 +1,7 @@ // eslint-disable-next-line import/no-extraneous-dependencies const { createConfig } = require('@openedx/frontend-build'); -module.exports = createConfig('eslint', { +const config = createConfig('eslint', { rules: { // Temporarily update the 'indent', 'template-curly-spacing' and // 'no-multiple-empty-lines' rules since they are causing eslint @@ -50,3 +50,14 @@ module.exports = createConfig('eslint', { 'function-paren-newline': 'off', }, }); + +config.settings = { + 'import/resolver': { + node: { + paths: ['src', 'node_modules'], + extensions: ['.js', '.jsx'], + }, + }, +}; + +module.exports = config; diff --git a/example.env.config.js b/example.env.config.js new file mode 100644 index 000000000..99db8bdfb --- /dev/null +++ b/example.env.config.js @@ -0,0 +1,60 @@ +/* +Authn MFE is now able to handle JS-based configuration! + +For the time being, the `.env.*` files are still made available when cloning down this repo or pulling from +the master branch. To switch to using `env.config.js`, make a copy of `example.env.config.js` and configure as needed. + +For testing with Jest Snapshot, there is a mock in `/src/setupTest.jsx` for `getConfig` that will need to be +uncommented. + +Note: having both .env and env.config.js files will follow a predictable order, in which non-empty values in the +JS-based config will overwrite the .env environment variables. + +frontend-platform's getConfig loads configuration in the following sequence: +- .env file config +- optional handlers (commonly used to merge MFE-specific config in via additional process.env variables) +- env.config.js file config +- runtime config +*/ + +module.exports = { + NODE_ENV: 'development', + NODE_PATH: './src', + PORT: 1999, + ACCESS_TOKEN_COOKIE_NAME: 'edx-jwt-cookie-header-payload', + BASE_URL: 'http://localhost:1999', + CREDENTIALS_BASE_URL: 'http://localhost:18150', + CSRF_TOKEN_API_PATH: '/csrf/api/v1/token', + ECOMMERCE_BASE_URL: 'http://localhost:18130', + LANGUAGE_PREFERENCE_COOKIE_NAME: 'openedx-language-preference', + LMS_BASE_URL: 'http://localhost:18000', + LOGIN_URL: 'http://localhost:1999/login', + LOGOUT_URL: 'http://localhost:18000/logout', + LOGO_URL: 'https://edx-cdn.org/v3/default/logo.svg', + LOGO_TRADEMARK_URL: 'https://edx-cdn.org/v3/default/logo-trademark.svg', + LOGO_WHITE_URL: 'https://edx-cdn.org/v3/default/logo-white.svg', + FAVICON_URL: 'https://edx-cdn.org/v3/default/favicon.ico', + MARKETING_SITE_BASE_URL: 'http://localhost:18000', + ORDER_HISTORY_URL: 'http://localhost:1996/orders', + REFRESH_ACCESS_TOKEN_ENDPOINT: 'http://localhost:18000/login_refresh', + SEGMENT_KEY: '', + SITE_NAME: 'Your Platform Name Here', + INFO_EMAIL: 'info@example.com', + ENABLE_DYNAMIC_REGISTRATION_FIELDS: 'true', + ENABLE_PROGRESSIVE_PROFILING_ON_AUTHN: 'true', + SESSION_COOKIE_DOMAIN: 'localhost', + USER_INFO_COOKIE_NAME: 'edx-user-info', + LOGIN_ISSUE_SUPPORT_LINK: 'http://localhost:18000/login-issue-support-url', + TOS_AND_HONOR_CODE: 'http://localhost:18000/honor', + TOS_LINK: 'http://localhost:18000/tos', + PRIVACY_POLICY: 'http://localhost:18000/privacy', + AUTHN_PROGRESSIVE_PROFILING_SUPPORT_LINK: 'http://localhost:1999/welcome', + BANNER_IMAGE_LARGE: '', + BANNER_IMAGE_MEDIUM: '', + BANNER_IMAGE_SMALL: '', + BANNER_IMAGE_EXTRA_SMALL: '', + APP_ID: '', + MFE_CONFIG_API_URL: '', + ZENDESK_KEY: '', + ZENDESK_LOGO_URL: '', +}; diff --git a/webpack.dev.config.js b/webpack.dev.config.js new file mode 100644 index 000000000..f70fa45af --- /dev/null +++ b/webpack.dev.config.js @@ -0,0 +1,14 @@ +const path = require('path'); + +const { createConfig } = require('@openedx/frontend-build'); + +const config = createConfig('webpack-dev'); + +config.resolve.modules = [ + path.resolve(__dirname, './src'), + 'node_modules', +]; + +config.module.rules[0].exclude = /node_modules\/(?!(fastest-levenshtein|@edx))/; + +module.exports = config; diff --git a/webpack.prod.config.js b/webpack.prod.config.js index 73d22693e..eb59b9416 100644 --- a/webpack.prod.config.js +++ b/webpack.prod.config.js @@ -1,7 +1,14 @@ +const path = require('path'); + const { createConfig } = require('@openedx/frontend-build'); const config = createConfig('webpack-prod'); +config.resolve.modules = [ + path.resolve(__dirname, './src'), + 'node_modules', +]; + config.module.rules[0].exclude = /node_modules\/(?!(fastest-levenshtein|@edx))/; module.exports = config;