Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions packages/react-scripts/backpack-addons/resolveSymlinks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
'use strict';

const paths = require('../config/paths');
const appPackageJson = require(paths.appPackageJson);
const bpkReactScriptsConfig = appPackageJson['backpack-react-scripts'] || {};
const resolveSymlinks =
bpkReactScriptsConfig.resolveSymlinks != undefined
? bpkReactScriptsConfig.resolveSymlinks
: true;

module.exports = {
symlinks: resolveSymlinks,
};
55 changes: 33 additions & 22 deletions packages/react-scripts/config/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ const hasJsxRuntime = (() => {
}
})();

// The istanbul plugin is used to instrument code for coverage information,
// pass the config ENABLE_ISTANBUL_PLUGIN=true to enable the plugin. Be cautious this will
// The istanbul plugin is used to instrument code for coverage information,
// pass the config ENABLE_ISTANBUL_PLUGIN=true to enable the plugin. Be cautious this will
// result in a large increasement on bundle size, so it should never be enabled in prod build.
const enableIstanbulPlugin = process.env.ENABLE_ISTANBUL_PLUGIN === 'true';

Expand Down Expand Up @@ -191,20 +191,22 @@ module.exports = function (webpackEnv) {
{
loader: require.resolve('resolve-url-loader'),
options: {
sourceMap: isEnvProduction ? shouldUseSourceMap : isEnvDevelopment,
sourceMap: isEnvProduction
? shouldUseSourceMap
: isEnvDevelopment,
root: paths.appSrc,
},
},
{
loader: require.resolve(preProcessor),
options: {
...preProcessorOptions, // #backpack-addons sassFunctions
...preProcessorOptions, // #backpack-addons sassFunctions
...{
sourceMap: true,
},
},
},
].filter(Boolean),
].filter(Boolean)
);
}
return loaders;
Expand Down Expand Up @@ -247,7 +249,7 @@ module.exports = function (webpackEnv) {
]
: paths.appIndexJs,
output: {
...require('../backpack-addons/crossOriginLoading'), // #backpack-addon crossOriginLoading
...require('../backpack-addons/crossOriginLoading'), // #backpack-addon crossOriginLoading
// The build folder.
path: isSsr() ? paths.appBuildWeb : paths.appBuild,
// Add /* filename */ comments to generated require()s in the output.
Expand Down Expand Up @@ -347,7 +349,7 @@ module.exports = function (webpackEnv) {
},
}),
],
...require('../backpack-addons/splitChunks')(isEnvDevelopment), // #backpack-addons splitChunks
...require('../backpack-addons/splitChunks')(isEnvDevelopment), // #backpack-addons splitChunks
...require('../backpack-addons/runtimeChunk').runtimeChunk, // #backpack-addons runtimeChunk
},
...require('../backpack-addons/externals').externals(isEnvProduction), // #backpack-addons externals
Expand Down Expand Up @@ -393,6 +395,7 @@ module.exports = function (webpackEnv) {
reactRefreshOverlayEntry,
]),
],
...require('../backpack-addons/resolveSymlinks'), // #backpack-addon resolveSymlinks
},
resolveLoader: {
plugins: [
Expand Down Expand Up @@ -423,7 +426,7 @@ module.exports = function (webpackEnv) {
name: 'static/media/[name].[hash:8].[ext]',
},
},
require('../backpack-addons/amdExcludes'), // #backpack-addons amdExcludes
require('../backpack-addons/amdExcludes'), // #backpack-addons amdExcludes
// "url" loader works like "file" loader except that it embeds assets
// smaller than specified limit in bytes as data URLs to avoid requests.
// A missing `test` is equivalent to a match.
Expand All @@ -439,7 +442,7 @@ module.exports = function (webpackEnv) {
// The preset includes JSX, Flow, TypeScript, and some ESnext features.
{
test: /\.(js|mjs|jsx|ts|tsx)$/,
include: require('../backpack-addons/babelIncludePrefixes')(), // #backpack-addon babelIncludePrefixes
include: require('../backpack-addons/babelIncludePrefixes')(), // #backpack-addon babelIncludePrefixes
loader: require.resolve('babel-loader'),
options: {
customize: require.resolve(
Expand Down Expand Up @@ -491,11 +494,11 @@ module.exports = function (webpackEnv) {
require.resolve('react-refresh/babel'),
enableIstanbulPlugin && [
require.resolve('babel-plugin-istanbul'),
{
// do not instrument code coverage for tests / storybook files
exclude: ["**/*.test.*", "**/*.stories.*"],
},
],
{
// do not instrument code coverage for tests / storybook files
exclude: ['**/*.test.*', '**/*.stories.*'],
},
],
].filter(Boolean),
// This is a feature of `babel-loader` for webpack (not Babel itself).
// It enables caching results in ./node_modules/.cache/babel-loader/
Expand All @@ -511,7 +514,7 @@ module.exports = function (webpackEnv) {
{
test: /\.(js|mjs|jsx|ts|tsx)$/,
exclude: /\.storybook/,
include: require('../backpack-addons/babelIncludePrefixes')(), // #backpack-addon babelIncludePrefixes
include: require('../backpack-addons/babelIncludePrefixes')(), // #backpack-addon babelIncludePrefixes
use: [
{
loader: require.resolve('thread-loader'),
Expand Down Expand Up @@ -625,7 +628,9 @@ module.exports = function (webpackEnv) {
// of CSS.
// By default we support CSS Modules with the extension .module.css
{
test: require('../backpack-addons/cssModules').getStyleTestRegexes('css'), // #backpack-addons cssModulesEnabled
test: require('../backpack-addons/cssModules').getStyleTestRegexes(
'css'
), // #backpack-addons cssModulesEnabled
exclude: cssModuleRegex,
use: getStyleLoaders({
importLoaders: 1,
Expand All @@ -642,7 +647,9 @@ module.exports = function (webpackEnv) {
// Adds support for CSS Modules (https://github.com/css-modules/css-modules)
// using the extension .module.css
{
test: require('../backpack-addons/cssModules').getStyleTestRegexes('cssModule'), // #backpack-addons cssModulesEnabled
test: require('../backpack-addons/cssModules').getStyleTestRegexes(
'cssModule'
), // #backpack-addons cssModulesEnabled
use: getStyleLoaders({
importLoaders: 1,
sourceMap: isEnvProduction
Expand All @@ -657,7 +664,9 @@ module.exports = function (webpackEnv) {
// By default we support SASS Modules with the
// extensions .module.scss or .module.sass
{
test: require('../backpack-addons/cssModules').getStyleTestRegexes('sass'), // #backpack-addons cssModulesEnabled
test: require('../backpack-addons/cssModules').getStyleTestRegexes(
'sass'
), // #backpack-addons cssModulesEnabled
exclude: sassModuleRegex,
use: getStyleLoaders(
{
Expand All @@ -669,7 +678,7 @@ module.exports = function (webpackEnv) {
: isEnvDevelopment,
},
'sass-loader',
require('../backpack-addons/sassFunctions') // #backpack-addons sassFunctions
require('../backpack-addons/sassFunctions') // #backpack-addons sassFunctions
),
// Don't consider CSS imports dead code even if the
// containing package claims to have no side effects.
Expand All @@ -680,7 +689,9 @@ module.exports = function (webpackEnv) {
// Adds support for CSS Modules, but using SASS
// using the extension .module.scss or .module.sass
{
test: require('../backpack-addons/cssModules').getStyleTestRegexes('sassModule'), // #backpack-addons cssModulesEnabled
test: require('../backpack-addons/cssModules').getStyleTestRegexes(
'sassModule'
), // #backpack-addons cssModulesEnabled
use: getStyleLoaders(
{
// When using cache-loader, the total count of loaders is up to 4 including cache-loader below the css-loader
Expand All @@ -694,7 +705,7 @@ module.exports = function (webpackEnv) {
},
},
'sass-loader',
require('../backpack-addons/sassFunctions') // #backpack-addons sassFunctions
require('../backpack-addons/sassFunctions') // #backpack-addons sassFunctions
),
},
// "file" loader makes sure those assets get served by WebpackDevServer.
Expand Down Expand Up @@ -824,7 +835,7 @@ module.exports = function (webpackEnv) {
// both options are optional
filename: 'static/css/[name].[contenthash:8].css',
chunkFilename: 'static/css/[name].[contenthash:8].chunk.css',
...require('../backpack-addons/ignoreCssWarnings') // #backpack-addon ignoreCssWarnings
...require('../backpack-addons/ignoreCssWarnings'), // #backpack-addon ignoreCssWarnings
}),
// Generate an asset manifest file with the following content:
// - "files" key: Mapping of all asset filenames to their corresponding
Expand Down
5 changes: 3 additions & 2 deletions packages/react-scripts/config/webpack.config.ssr.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ const reactRefreshOverlayEntry = require.resolve(

// The istanbul plugin is not required by ssr. Added it here only to
// comply with BRS maintenance convention that plugin added to webpack.config.js
// needs to have an acccordingly config in webpack.config.ssr.js. It can be removed
// needs to have an acccordingly config in webpack.config.ssr.js. It can be removed
// once such a convention is dropped.
// const enableIstanbulPlugin = process.env.ENABLE_ISTANBUL_PLUGIN === 'true';

Expand Down Expand Up @@ -434,6 +434,7 @@ module.exports = function (webpackEnv) {
reactRefreshOverlayEntry,
]),
],
...require('../backpack-addons/resolveSymlinks'), // #backpack-addon resolveSymlinks
},
resolveLoader: {
plugins: [
Expand Down Expand Up @@ -532,7 +533,7 @@ module.exports = function (webpackEnv) {
require.resolve('react-refresh/babel'),
// The istanbul plugin is not required by ssr. Added it here only to
// comply with BRS maintenance convention that plugin added to webpack.config.js
// needs to have an acccordingly config in webpack.config.ssr.js. It can be removed
// needs to have an acccordingly config in webpack.config.ssr.js. It can be removed
// once such a convention is dropped.
// enableIstanbulPlugin && [
// require.resolve('babel-plugin-istanbul'),
Expand Down