main
js 100 lines 2.43 KB
Raw
1 const {resolve} = require('path');
2 const Webpack = require('webpack');
3 const {
4 GITHUB_URL,
5 getVersionString,
6 } = require('react-devtools-extensions/utils');
7 const {resolveFeatureFlags} = require('react-devtools-shared/buildUtils');
8
9 const NODE_ENV = process.env.NODE_ENV;
10 if (!NODE_ENV) {
11 console.error('NODE_ENV not set');
12 process.exit(1);
13 }
14
15 const builtModulesDir = resolve(
16 __dirname,
17 '..',
18 '..',
19 'build',
20 'oss-experimental',
21 );
22
23 const __DEV__ = NODE_ENV === 'development';
24
25 const DEVTOOLS_VERSION = getVersionString();
26
27 const featureFlagTarget = process.env.FEATURE_FLAG_TARGET || 'core/backend-oss';
28
29 // This targets RN/Hermes.
30 process.env.BABEL_CONFIG_ADDITIONAL_TARGETS = JSON.stringify({
31 ie: '11',
32 });
33
34 module.exports = {
35 mode: __DEV__ ? 'development' : 'production',
36 devtool: __DEV__ ? 'eval-cheap-module-source-map' : 'source-map',
37 entry: {
38 backend: './src/backend.js',
39 },
40 output: {
41 path: __dirname + '/dist',
42 filename: '[name].js',
43
44 // This name is important; standalone references it in order to connect.
45 library: 'ReactDevToolsBackend',
46 libraryTarget: 'umd',
47 umdNamedDefine: true,
48 },
49 resolve: {
50 alias: {
51 react: resolve(builtModulesDir, 'react'),
52 'react-debug-tools': resolve(builtModulesDir, 'react-debug-tools'),
53 'react-devtools-feature-flags': resolveFeatureFlags(featureFlagTarget),
54 'react-dom': resolve(builtModulesDir, 'react-dom'),
55 'react-is': resolve(builtModulesDir, 'react-is'),
56 scheduler: resolve(builtModulesDir, 'scheduler'),
57 },
58 },
59 node: {
60 global: false,
61 },
62 plugins: [
63 new Webpack.ProvidePlugin({
64 process: 'process/browser',
65 }),
66 new Webpack.DefinePlugin({
67 __DEV__,
68 __EXPERIMENTAL__: true,
69 __EXTENSION__: false,
70 __PROFILE__: false,
71 __TEST__: NODE_ENV === 'test',
72 __IS_FIREFOX__: false,
73 __IS_CHROME__: false,
74 __IS_EDGE__: false,
75 __IS_NATIVE__: true,
76 'process.env.DEVTOOLS_PACKAGE': `"react-devtools-core"`,
77 'process.env.DEVTOOLS_VERSION': `"${DEVTOOLS_VERSION}"`,
78 'process.env.GITHUB_URL': `"${GITHUB_URL}"`,
79 }),
80 ],
81 optimization: {
82 minimize: false,
83 },
84 module: {
85 rules: [
86 {
87 test: /\.js$/,
88 loader: 'babel-loader',
89 options: {
90 configFile: resolve(
91 __dirname,
92 '..',
93 'react-devtools-shared',
94 'babel.config.js',
95 ),
96 },
97 },
98 ],
99 },
100 };