Files
react-native-web/packages/examples/webpack.config.js
Nicolas Gallagher c3eedabac4 Add React Native examples app
RNTester examples taken from React Native 0.55.4.

Minor changes to disable / enable some examples for the web.
2018-06-04 10:24:31 -07:00

114 lines
3.1 KiB
JavaScript

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const path = require('path');
const appDirectory = path.resolve(__dirname);
module.exports = {
mode: process.env.NODE_ENV || 'production',
context: __dirname,
entry: [
// polyfill non-standard APIs
'./src/polyfills',
// app entry file
'./src'
],
output: {
path: path.resolve(appDirectory, 'dist'),
filename: 'bundle.js'
},
module: {
rules: [
{
test: /\.(gif|jpe?g|png|svg)$/,
use: {
loader: 'file-loader'
}
},
{
test: /\.js$/,
include: [
// anything that needs to be compiled to ES5
path.resolve(appDirectory, 'src')
],
use: {
loader: 'babel-loader',
options: {
cacheDirectory: false,
presets: ['react-native'],
plugins: [
// needed to support async/await
'transform-runtime'
]
}
}
}
]
},
plugins: [
new BundleAnalyzerPlugin({
analyzerMode: 'static',
openAnalyzer: false
})
],
resolve: {
alias: Object.assign(
{
// use commonjs modules due to mock haste resolver aliases
'react-native$': 'react-native-web/dist/cjs'
},
{
// temporary hack to work around image loading
'./flux.png': './flux@3x.png',
'../relay.png': '../relay@3x.png',
'./uie_comment_highlighted.png': './uie_comment_highlighted@2x.png',
'./uie_comment_normal.png': './uie_comment_normal@2x.png',
'./uie_thumb_normal.png': './uie_thumb_normal@2x.png',
'./uie_thumb_selected.png': './uie_thumb_selected@2x.png'
},
// mock haste resolver
[
'ActivityIndicator',
'Alert',
'AsyncStorage',
'Button',
'DeviceInfo',
'Modal',
'NativeModules',
'Platform',
'SafeAreaView',
'SectionList',
'StyleSheet',
'Switch',
'Text',
'TextInput',
'TouchableHighlight',
'TouchableWithoutFeedback',
'View',
'ViewPropTypes'
].reduce(
(acc, curr) => {
acc[curr] = `react-native-web/dist/cjs/exports/${curr}`;
return acc;
},
{
JSEventLoopWatchdog: 'react-native-web/dist/cjs/vendor/react-native/JSEventLoopWatchdog',
React$: 'react',
ReactNative$: 'react-native-web/dist/cjs',
AnExSet: path.resolve(__dirname, './src/RNTester/AnimatedGratuitousApp/AnExSet'),
RNTesterBlock: path.resolve(__dirname, './src/RNTester/RNTesterBlock'),
RNTesterPage: path.resolve(__dirname, './src/RNTester/RNTesterPage'),
RNTesterSettingSwitchRow: path.resolve(
__dirname,
'./src/RNTester/RNTesterSettingSwitchRow'
),
infoLog$: 'react-native-web/dist/cjs/vendor/react-native/infoLog',
nativeImageSource$: path.resolve(__dirname, './src/nativeImageSource')
}
)
),
extensions: ['.web.js', '.js', '.json']
}
};