mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 12:20:20 +01:00
React currently suppress console logs in StrictMode during double rendering. However, this causes a lot of confusion. This PR moves the console suppression logic from React into React Devtools. Now by default, we no longer suppress console logs. Instead, we gray out the logs in console during double render. We also add a setting in React Devtools to allow developers to hide console logs during double render if they choose.
129 lines
3.9 KiB
JavaScript
129 lines
3.9 KiB
JavaScript
const {resolve} = require('path');
|
|
const {DefinePlugin} = require('webpack');
|
|
const {
|
|
DARK_MODE_DIMMED_WARNING_COLOR,
|
|
DARK_MODE_DIMMED_ERROR_COLOR,
|
|
DARK_MODE_DIMMED_LOG_COLOR,
|
|
LIGHT_MODE_DIMMED_WARNING_COLOR,
|
|
LIGHT_MODE_DIMMED_ERROR_COLOR,
|
|
LIGHT_MODE_DIMMED_LOG_COLOR,
|
|
GITHUB_URL,
|
|
getVersionString,
|
|
} = require('react-devtools-extensions/utils');
|
|
const {resolveFeatureFlags} = require('react-devtools-shared/buildUtils');
|
|
|
|
const NODE_ENV = process.env.NODE_ENV;
|
|
if (!NODE_ENV) {
|
|
console.error('NODE_ENV not set');
|
|
process.exit(1);
|
|
}
|
|
|
|
const builtModulesDir = resolve(__dirname, '..', '..', 'build', 'node_modules');
|
|
|
|
const __DEV__ = NODE_ENV === 'development';
|
|
|
|
const DEVTOOLS_VERSION = getVersionString();
|
|
|
|
const babelOptions = {
|
|
configFile: resolve(
|
|
__dirname,
|
|
'..',
|
|
'react-devtools-shared',
|
|
'babel.config.js',
|
|
),
|
|
};
|
|
|
|
module.exports = {
|
|
mode: __DEV__ ? 'development' : 'production',
|
|
devtool: __DEV__ ? 'cheap-module-eval-source-map' : 'source-map',
|
|
target: 'electron-main',
|
|
entry: {
|
|
standalone: './src/standalone.js',
|
|
},
|
|
output: {
|
|
path: __dirname + '/dist',
|
|
filename: '[name].js',
|
|
library: '[name]',
|
|
libraryTarget: 'commonjs2',
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
react: resolve(builtModulesDir, 'react'),
|
|
'react-debug-tools': resolve(builtModulesDir, 'react-debug-tools'),
|
|
'react-devtools-feature-flags': resolveFeatureFlags('core/standalone'),
|
|
'react-dom': resolve(builtModulesDir, 'react-dom'),
|
|
'react-is': resolve(builtModulesDir, 'react-is'),
|
|
scheduler: resolve(builtModulesDir, 'scheduler'),
|
|
},
|
|
},
|
|
node: {
|
|
// Don't replace __dirname!
|
|
// This would break the standalone DevTools ability to load the backend.
|
|
// see https://github.com/facebook/react-devtools/issues/1269
|
|
__dirname: false,
|
|
},
|
|
plugins: [
|
|
new DefinePlugin({
|
|
__DEV__,
|
|
__EXPERIMENTAL__: true,
|
|
__EXTENSION__: false,
|
|
__PROFILE__: false,
|
|
__TEST__: NODE_ENV === 'test',
|
|
'process.env.DEVTOOLS_PACKAGE': `"react-devtools-core"`,
|
|
'process.env.DEVTOOLS_VERSION': `"${DEVTOOLS_VERSION}"`,
|
|
'process.env.GITHUB_URL': `"${GITHUB_URL}"`,
|
|
'process.env.NODE_ENV': `"${NODE_ENV}"`,
|
|
'process.env.DARK_MODE_DIMMED_WARNING_COLOR': `"${DARK_MODE_DIMMED_WARNING_COLOR}"`,
|
|
'process.env.DARK_MODE_DIMMED_ERROR_COLOR': `"${DARK_MODE_DIMMED_ERROR_COLOR}"`,
|
|
'process.env.DARK_MODE_DIMMED_LOG_COLOR': `"${DARK_MODE_DIMMED_LOG_COLOR}"`,
|
|
'process.env.LIGHT_MODE_DIMMED_WARNING_COLOR': `"${LIGHT_MODE_DIMMED_WARNING_COLOR}"`,
|
|
'process.env.LIGHT_MODE_DIMMED_ERROR_COLOR': `"${LIGHT_MODE_DIMMED_ERROR_COLOR}"`,
|
|
'process.env.LIGHT_MODE_DIMMED_LOG_COLOR': `"${LIGHT_MODE_DIMMED_LOG_COLOR}"`,
|
|
}),
|
|
],
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.worker\.js$/,
|
|
use: [
|
|
{
|
|
loader: 'workerize-loader',
|
|
options: {
|
|
inline: true,
|
|
},
|
|
},
|
|
{
|
|
loader: 'babel-loader',
|
|
options: babelOptions,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
test: /\.js$/,
|
|
loader: 'babel-loader',
|
|
options: babelOptions,
|
|
},
|
|
{
|
|
test: /\.css$/,
|
|
use: [
|
|
{
|
|
loader: 'style-loader',
|
|
},
|
|
{
|
|
loader: 'css-loader',
|
|
options: {
|
|
// WARNING It's important that we disable CSS source maps for production builds.
|
|
// This causes style-loader to insert styles via a <style> tag rather than URL.createObjectURL,
|
|
// which in turn avoids a nasty Electron/Chromium bug that breaks DevTools in Nuclide.
|
|
// (Calls to URL.createObjectURL seem to crash the webview process.)
|
|
sourceMap: __DEV__,
|
|
modules: true,
|
|
localIdentName: '[local]___[hash:base64:5]',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
};
|