-
Notifications
You must be signed in to change notification settings - Fork 2
/
webpack.config.js
118 lines (111 loc) · 3.26 KB
/
webpack.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const webpack = require("webpack");
const appDirectory = path.resolve(__dirname);
const babelLoaderConfiguration = {
test: [/\.js$/, /\.jsx$/, /\.ts$/],
include: [
path.resolve(__dirname, "index.web.js"),
path.resolve(__dirname, "App.web.js"),
path.resolve(__dirname, "src"),
path.resolve(__dirname, "./storybook/stories"),
path.resolve(__dirname, "./.storybook/preview.js"),
path.resolve(__dirname, "./node_modules/@bigbinary/neeto-icons-rn"),
path.resolve(__dirname, "./node_modules/react-native-modal-selector"),
path.resolve(__dirname, "./node_modules/react-native-swipe-gestures"),
path.resolve(__dirname, "./node_modules/react-native-modal"),
path.resolve(__dirname, "./node_modules/react-native-animatable"),
path.resolve(__dirname, "./node_modules/react-native-reanimated"),
path.resolve(__dirname, "./node_modules/react-native-gesture-handler"),
path.resolve(__dirname, "./node_modules/react-native-remix-icon"),
path.resolve(__dirname, "./node_modules/react-native-svg"),
path.resolve(__dirname, "./node_modules/react-native-svg-transformer"),
path.resolve(__dirname, "./node_modules/react-native-toast-message"),
path.resolve(__dirname, "./node_modules/react-native-fast-image"),
path.resolve(
__dirname,
"./node_modules/react-native-keyboard-aware-scroll-view"
),
path.resolve(__dirname, "./node_modules/react-native-pell-rich-editor"),
path.resolve(__dirname, "./node_modules/react-native-webview"),
path.resolve(__dirname, "./node_modules/react-native-calendars"),
],
use: {
loader: "babel-loader",
options: {
cacheDirectory: true,
presets: [
"@babel/env",
"@babel/preset-react",
"module:metro-react-native-babel-preset",
],
plugins: ["react-native-web", "@babel/plugin-proposal-class-properties"],
},
},
};
const ttfLoaderConfiguration = {
test: /\.ttf$/,
use: {
loader: "url-loader",
},
include: [path.resolve(appDirectory, "./assets")],
};
const svgLoaderConfiguration = {
test: /\.svg$/,
use: [
{
loader: "@svgr/webpack",
},
],
};
const imageLoaderConfiguration = {
test: /\.(gif|jpe?g|png)$/,
use: {
loader: "url-loader",
options: {
name: "[name].[ext]",
},
},
};
module.exports = {
entry: {
app: path.join(__dirname, "index.web.js"),
},
output: {
path: path.resolve(appDirectory, "dist"),
publicPath: "/",
filename: "rnw.bundle.js",
},
resolve: {
extensions: [".web.tsx", ".web.ts", ".tsx", ".ts", ".web.js", ".js", ".jsx"],
alias: {
"react-native$": "react-native-web",
},
},
module: {
rules: [
babelLoaderConfiguration,
imageLoaderConfiguration,
svgLoaderConfiguration,
ttfLoaderConfiguration,
],
},
plugins: [
new HtmlWebpackPlugin({
template: path.join(__dirname, "index.html"),
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.DefinePlugin({
__DEV__: JSON.stringify(true),
}),
new webpack.DefinePlugin({ process: { env: {} } }),
],
devServer: {
open: true,
},
performance: {
hints: false,
maxEntrypointSize: 512000,
maxAssetSize: 512000
}
};