mirror of
https://github.com/zhigang1992/react-native-web.git
synced 2026-01-12 22:51:09 +08:00
RNTester examples taken from React Native 0.55.4. Minor changes to disable / enable some examples for the web.
114 lines
3.1 KiB
JavaScript
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']
|
|
}
|
|
};
|