Browse Source

Add video backdrop

Adds a looped video backdrop to app using react-native-video. Also in
this update:

- Fork react-native-video until brentvatne/react-native-video/pull/35
- Update WebPack config to handle new module ES6/ES7 transpilation
- Add missing ignored module for roman01la/react-native-babel/pull/5
- Add AnyBar plug-in for Webpack
- Put project workspace under source control
- Update roadmap
master
Josh Habdas 6 years ago
parent
commit
f82f2c5f84
12 changed files with 88 additions and 19 deletions
  1. +0
    -1
      .gitignore
  2. +1
    -0
      README.md
  3. +34
    -0
      ReactNativeEs6Reflux.xcodeproj/project.pbxproj
  4. +1
    -1
      ignored-modules.js
  5. +6
    -2
      package.json
  6. BIN
      src/assets/videos/turntable-loop-1920x500-bw.webm
  7. BIN
      src/assets/videos/turntable-loop-1920x500-h264-512kbps-bw.mov
  8. BIN
      src/assets/videos/turntable-loop-1920x500-h264-512kbps-h264.mp4
  9. BIN
      src/assets/videos/turntable-loop-poster.jpg
  10. +12
    -1
      src/components/app.jsx
  11. +13
    -2
      src/styles.es6
  12. +21
    -12
      webpack.config.js

+ 0
- 1
.gitignore View File

@ -20,7 +20,6 @@ DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# CocoaPods
#

+ 1
- 0
README.md View File

@ -13,6 +13,7 @@ Lumpen Radio is here. Almost...
- Show progress for initial connection
- Allow audio disruption for calls, etc.
- Provide on-air off-air user feedback
- Automatically reconnect if disconnected
- Indicate progress for long-running ops
- Icon long-press resets HTTP connection

+ 34
- 0
ReactNativeEs6Reflux.xcodeproj/project.pbxproj View File

@ -23,6 +23,8 @@
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; };
DDE725231B02BD1700AA769D /* libRCTVideo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DDE725221B02BD0900AA769D /* libRCTVideo.a */; };
DDE7252F1B02C17100AA769D /* turntable-loop-1920x500-h264-512kbps-h264.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = DDE7252E1B02C17100AA769D /* turntable-loop-1920x500-h264-512kbps-h264.mp4 */; };
DDF8C1BD1B012E4F0000C2B4 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF8C1BA1B012E4F0000C2B4 /* AppDelegate.m */; };
DDF8C1BE1B012E4F0000C2B4 /* AudioManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DDF8C1BC1B012E4F0000C2B4 /* AudioManager.m */; };
/* End PBXBuildFile section */
@ -105,6 +107,13 @@
remoteGlobalIDString = 58B5119B1A9E6C1200147676;
remoteInfo = RCTText;
};
DDE725211B02BD0900AA769D /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = DDE7251D1B02BD0900AA769D /* RCTVideo.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 134814201AA4EA6300B7C361;
remoteInfo = RCTVideo;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
@ -131,6 +140,8 @@
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
DD3B4C341AFDC76C00BCD40D /* libPods-StreamingKit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libPods-StreamingKit.a"; path = "Pods/../build/Debug-iphoneos/libPods-StreamingKit.a"; sourceTree = "<group>"; };
DDE7251D1B02BD0900AA769D /* RCTVideo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVideo.xcodeproj; path = "node_modules/react-native-video/RCTVideo.xcodeproj"; sourceTree = "<group>"; };
DDE7252E1B02C17100AA769D /* turntable-loop-1920x500-h264-512kbps-h264.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; name = "turntable-loop-1920x500-h264-512kbps-h264.mp4"; path = "src/assets/videos/turntable-loop-1920x500-h264-512kbps-h264.mp4"; sourceTree = "<group>"; };
DDF8C1B91B012E4F0000C2B4 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
DDF8C1BA1B012E4F0000C2B4 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
DDF8C1BB1B012E4F0000C2B4 /* AudioManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioManager.h; sourceTree = "<group>"; };
@ -150,6 +161,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
DDE725231B02BD1700AA769D /* libRCTVideo.a in Frameworks */,
146834051AC3E58100842450 /* libReact.a in Frameworks */,
00481BE81AC0C86700671115 /* libRCTWebSocketDebugger.a in Frameworks */,
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
@ -243,6 +255,7 @@
13B07FAE1A68108700A75B9A /* ReactNativeEs6Reflux */ = {
isa = PBXGroup;
children = (
DDE7252E1B02C17100AA769D /* turntable-loop-1920x500-h264-512kbps-h264.mp4 */,
DDF8C1AE1B012C320000C2B4 /* Helpers */,
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
13B07FB51A68108700A75B9A /* Images.xcassets */,
@ -290,6 +303,7 @@
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
isa = PBXGroup;
children = (
DDE7251D1B02BD0900AA769D /* RCTVideo.xcodeproj */,
78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */,
146833FF1AC3E56700842450 /* React.xcodeproj */,
832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */,
@ -335,6 +349,14 @@
name = Products;
sourceTree = "<group>";
};
DDE7251E1B02BD0900AA769D /* Products */ = {
isa = PBXGroup;
children = (
DDE725221B02BD0900AA769D /* libRCTVideo.a */,
);
name = Products;
sourceTree = "<group>";
};
DDF8C1AE1B012C320000C2B4 /* Helpers */ = {
isa = PBXGroup;
children = (
@ -447,6 +469,10 @@
ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */;
ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */;
},
{
ProductGroup = DDE7251E1B02BD0900AA769D /* Products */;
ProjectRef = DDE7251D1B02BD0900AA769D /* RCTVideo.xcodeproj */;
},
{
ProductGroup = 00481BDC1AC0C7FA00671115 /* Products */;
ProjectRef = 00481BDB1AC0C7FA00671115 /* RCTWebSocketDebugger.xcodeproj */;
@ -535,6 +561,13 @@
remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
DDE725221B02BD0900AA769D /* libRCTVideo.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libRCTVideo.a;
remoteRef = DDE725211B02BD0900AA769D /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
/* End PBXReferenceProxy section */
/* Begin PBXResourcesBuildPhase section */
@ -550,6 +583,7 @@
buildActionMask = 2147483647;
files = (
008F07F31AC5B25A0029DE68 /* main.jsbundle in Resources */,
DDE7252F1B02C17100AA769D /* turntable-loop-1920x500-h264-512kbps-h264.mp4 in Resources */,
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
);

+ 1
- 1
ignored-modules.js View File

@ -1 +1 @@
module.exports = /react-native\/Libraries\/react-native\/react-native|React|requireNativeComponent|ReactIOS|ReactChildren|PooledClass|invariant|ReactFragment|ReactElement|ReactContext|Object.assign|emptyObject|warning|emptyFunction|ReactCurrentOwner|traverseAllChildren|ReactInstanceHandles|ReactRootIndex|getIteratorFn|ReactClass|ReactComponent|ReactUpdateQueue|ReactLifeCycle|ReactInstanceMap|ReactUpdates|CallbackQueue|ReactPerf|ReactReconciler|ReactRef|ReactOwner|ReactElementValidator|ReactPropTypeLocations|keyMirror|ReactPropTypeLocationNames|ReactNativeComponent|Transaction|ReactErrorUtils|keyOf|ReactIOSDefaultInjection|InitializeJavaScriptAppEngine|RCTDeviceEventEmitter|EventEmitter|EmitterSubscription|EventSubscription|ErrorUtils|EventSubscriptionVendor|ExceptionsManager|Platform|NativeModules|BatchedBridge|BatchedBridgeFactory|mapObject|MessageQueue|JSTimersExecution|performanceNow|performance|ExecutionEnvironment|JSTimers|nativeModulePrefixNormalizer|loadSourceMap|Promise|ES6Promise|setImmediate|ImmediateImplementation|throwImmediate|SourceMap|react-native\/Libraries\/JavaScriptAppEngine\/Initialization\/source-map-url|fetch|parseErrorStack|stacktrace-parser\/index|stacktrace-parser\/lib\/stacktrace-parser|XMLHttpRequest|crc32|XMLHttpRequestBase|Geolocation|logError|EventPluginHub|EventPluginRegistry|EventPluginUtils|EventConstants|accumulateInto|forEachAccumulated|IOSDefaultEventPluginOrder|IOSNativeBridgeEventPlugin|EventPropagators|SyntheticEvent|getEventTarget|merge|mergeInto|mergeHelpers|NodeHandle|ReactComponentEnvironment|ReactDefaultBatchingStrategy|ReactIOSComponentEnvironment|ReactIOSDOMIDOperations|ReactIOSTagHandles|ReactMultiChildUpdateTypes|ReactIOSReconcileTransaction|ReactIOSComponentMixin|ReactIOSGlobalInteractionHandler|InteractionManager|Set|Map|guid|isNode|toIterator|_shouldPolyfillES6Collection|ReactIOSGlobalResponderHandler|ReactIOSMount|instantiateReactComponent|ReactCompositeComponent|shouldUpdateReactComponent|ReactEmptyComponent|ReactIOSTextComponent|ResponderEventPlugin|ResponderSyntheticEvent|ResponderTouchHistoryStore|accumulate|UniversalWorkerNodeHandle|RCTEventEmitter|ReactIOSEventEmitter|ReactEventEmitterMixin|RCTLog|RCTJSTimers|ReactPropTypes|deprecated|onlyChild|ActivityIndicatorIOS|NativeMethodsMixin|TextInputState|flattenStyle|StyleSheetRegistry|mergeIntoFast|mergeFast|ReactIOSViewAttributes|StyleSheet|StyleSheetValidation|ImageStylePropTypes|ImageResizeMode|LayoutPropTypes|TextStylePropTypes|ViewStylePropTypes|View|StyleSheetPropType|createStrictShapeTypeChecker|createReactIOSNativeComponentClass|ReactIOSNativeComponent|ReactIOSStyleAttributes|deepDiffer|matricesDiffer|ReactMultiChild|ReactChildReconciler|flattenChildren|styleDiffer|deepFreezeAndThrowOnMutationInDev|diffRawProperties|DatePickerIOS|Image|EdgeInsetsPropType|insetsDiffer|ListView|ListViewDataSource|isEmpty|ScrollView|PointPropType|pointsDiffer|ScrollResponder|Subscribable|StaticRenderer|react-timer-mixin\/TimerMixin|MapView|NavigatorIOS|StaticContainer.react|PickerIOS|Navigator|Backstack|Dimensions|InteractionMixin|NavigatorSceneConfigs|PixelRatio|buildStyleInterpolator|NavigatorNavigationBar|NavigatorNavigationBarStyles|NavigatorBreadcrumbNavigationBar|NavigatorBreadcrumbNavigationBarStyles|PanResponder|TouchHistoryMath|clamp|rebound\/rebound|SliderIOS|SwitchIOS|TabBarIOS|TabBarItemIOS|Text|Touchable|BoundingDimensions|Position|TouchEventUtils|queryLayoutByID|TextInput|DocumentSelectionState|mixInEventEmitter|EventEmitterWithHolding|EventHolder|EventValidator|copyProperties|TouchableWithoutFeedback|getObjectValues|TouchableHighlight|cloneWithProps|ReactPropTransferer|joinClasses|ensureComponentIsNative|TouchableOpacity|POPAnimationMixin|POPAnimation|WebView|AlertIOS|Animation|AnimationUtils|AnimationMixin|AppRegistry|renderApplication|RCTRenderingPerf|ReactDefaultPerf|DOMProperty|ReactDefaultPerfAnalysis|ReactMount|ReactBrowserEventEmitter|ViewportMetrics|isEventSupported|ReactMarkupChecksum|adler32|containsNode|isTextNode|getReactRootElementInContainer|setInnerHTML|AppStateIOS|AsyncStorage|CameraRoll|LinkingIOS|LayoutAnimation|NetInfo|PushNotificationIOS|StatusBarIOS|VibrationIOS|LinkedStateMixin|ReactLink|ReactStateSetters|ReactComponentWithPureRenderMixin|shallowEqual|update|ReactTestUtils|image\!/;
module.exports = /react-native\/Libraries\/react-native\/react-native|React|requireNativeComponent|ReactIOS|ReactChildren|PooledClass|invariant|ReactFragment|ReactElement|ReactContext|Object.assign|emptyObject|warning|emptyFunction|ReactCurrentOwner|traverseAllChildren|ReactInstanceHandles|ReactRootIndex|getIteratorFn|ReactClass|ReactComponent|ReactUpdateQueue|ReactLifeCycle|ReactInstanceMap|ReactUpdates|CallbackQueue|ReactPerf|ReactReconciler|ReactRef|ReactOwner|ReactElementValidator|ReactPropTypeLocations|keyMirror|ReactPropTypeLocationNames|ReactNativeComponent|Transaction|ReactErrorUtils|keyOf|ReactIOSDefaultInjection|InitializeJavaScriptAppEngine|RCTDeviceEventEmitter|EventEmitter|EmitterSubscription|EventSubscription|ErrorUtils|EventSubscriptionVendor|ExceptionsManager|Platform|NativeModules|BatchedBridge|BatchedBridgeFactory|mapObject|MessageQueue|JSTimersExecution|performanceNow|performance|ExecutionEnvironment|JSTimers|nativeModulePrefixNormalizer|loadSourceMap|Promise|ES6Promise|setImmediate|ImmediateImplementation|throwImmediate|SourceMap|react-native\/Libraries\/JavaScriptAppEngine\/Initialization\/source-map-url|fetch|parseErrorStack|stacktrace-parser\/index|stacktrace-parser\/lib\/stacktrace-parser|XMLHttpRequest|crc32|XMLHttpRequestBase|Geolocation|logError|EventPluginHub|EventPluginRegistry|EventPluginUtils|EventConstants|accumulateInto|forEachAccumulated|IOSDefaultEventPluginOrder|IOSNativeBridgeEventPlugin|EventPropagators|SyntheticEvent|getEventTarget|merge|mergeInto|mergeHelpers|NodeHandle|ReactComponentEnvironment|ReactDefaultBatchingStrategy|ReactIOSComponentEnvironment|ReactIOSDOMIDOperations|ReactIOSTagHandles|ReactMultiChildUpdateTypes|ReactIOSReconcileTransaction|ReactIOSComponentMixin|ReactIOSGlobalInteractionHandler|InteractionManager|Set|Map|guid|isNode|toIterator|_shouldPolyfillES6Collection|ReactIOSGlobalResponderHandler|ReactIOSMount|instantiateReactComponent|ReactCompositeComponent|shouldUpdateReactComponent|ReactEmptyComponent|ReactIOSTextComponent|ResponderEventPlugin|ResponderSyntheticEvent|ResponderTouchHistoryStore|accumulate|UniversalWorkerNodeHandle|RCTEventEmitter|ReactIOSEventEmitter|ReactEventEmitterMixin|RCTLog|RCTJSTimers|ReactPropTypes|deprecated|onlyChild|ActivityIndicatorIOS|NativeMethodsMixin|TextInputState|flattenStyle|StyleSheetRegistry|mergeIntoFast|mergeFast|ReactIOSViewAttributes|StyleSheet|StyleSheetValidation|ImageStylePropTypes|ImageResizeMode|LayoutPropTypes|TextStylePropTypes|ViewStylePropTypes|View|StyleSheetPropType|createStrictShapeTypeChecker|createReactIOSNativeComponentClass|ReactIOSNativeComponent|ReactIOSStyleAttributes|deepDiffer|matricesDiffer|ReactMultiChild|ReactChildReconciler|flattenChildren|styleDiffer|deepFreezeAndThrowOnMutationInDev|diffRawProperties|DatePickerIOS|Image|EdgeInsetsPropType|insetsDiffer|ListView|ListViewDataSource|isEmpty|ScrollView|PointPropType|pointsDiffer|ScrollResponder|Subscribable|StaticRenderer|react-timer-mixin\/TimerMixin|MapView|NavigatorIOS|StaticContainer.react|PickerIOS|Navigator|Backstack|Dimensions|InteractionMixin|NavigatorSceneConfigs|PixelRatio|buildStyleInterpolator|NavigatorNavigationBar|NavigatorNavigationBarStyles|NavigatorBreadcrumbNavigationBar|NavigatorBreadcrumbNavigationBarStyles|PanResponder|TouchHistoryMath|clamp|rebound\/rebound|SliderIOS|SwitchIOS|TabBarIOS|TabBarItemIOS|Text|Touchable|BoundingDimensions|Position|TouchEventUtils|queryLayoutByID|TextInput|DocumentSelectionState|mixInEventEmitter|EventEmitterWithHolding|EventHolder|EventValidator|copyProperties|TouchableWithoutFeedback|getObjectValues|TouchableHighlight|cloneWithProps|ReactPropTransferer|joinClasses|ensureComponentIsNative|TouchableOpacity|POPAnimationMixin|POPAnimation|WebView|AlertIOS|Animation|AnimationUtils|AnimationMixin|AppRegistry|renderApplication|RCTRenderingPerf|ReactDefaultPerf|DOMProperty|ReactDefaultPerfAnalysis|ReactMount|ReactBrowserEventEmitter|ViewportMetrics|isEventSupported|ReactMarkupChecksum|adler32|containsNode|isTextNode|getReactRootElementInContainer|setInnerHTML|AppStateIOS|AsyncStorage|CameraRoll|LinkingIOS|LayoutAnimation|NetInfo|SegmentedControlIOS|PushNotificationIOS|StatusBarIOS|VibrationIOS|LinkedStateMixin|ReactLink|ReactStateSetters|ReactComponentWithPureRenderMixin|shallowEqual|update|ReactTestUtils|image\!/;

+ 6
- 2
package.json View File

@ -7,13 +7,17 @@
"webpack": "webpack --config webpack.config.js"
},
"dependencies": {
"react-native": "^0.4.2",
"react-native-video": "git://github.com/jhabdas/react-native-video.git#53b71d8533d45ace842100d6e88e5b6d24fc71d3",
"reflux": "^0.2.7"
},
"devDependencies": {
"anybar-webpack": "^1.0.7",
"babel-core": "^5.1.8",
"babel-loader": "^5.0.0",
"babel-runtime": "^5.1.8",
"eslint": "^0.19.0",
"eslint-plugin-react": "^2.2.0",
"react-native": "^0.4.0",
"reflux": "^0.2.7",
"webpack": "^1.8.4"
}
}

BIN
src/assets/videos/turntable-loop-1920x500-bw.webm View File


BIN
src/assets/videos/turntable-loop-1920x500-h264-512kbps-bw.mov View File


BIN
src/assets/videos/turntable-loop-1920x500-h264-512kbps-h264.mp4 View File


BIN
src/assets/videos/turntable-loop-poster.jpg View File

Before After
Width: 1920  |  Height: 520  |  Size: 27 KiB

+ 12
- 1
src/components/app.jsx View File

@ -5,7 +5,8 @@ import Actions from '../actions';
import Messages from '../stores/messages';
import styles from '../styles';
import { AudioPlayer } from '../lib/audio'
import { AudioPlayer } from '../lib/audio';
import Video from 'react-native-video';
let {
View,
@ -48,6 +49,16 @@ let App = React.createClass({
return (
<View style={styles.appContainer}>
<TouchableOpacity>
<Video source={{uri: 'turntable-loop-1920x500-h264-512kbps-h264'}}
style={styles.backgroundVideo}
rate={1} // use this.state.rate etc for the rest
muted={true}
resizeMode='cover'
repeat={true}
/>
</TouchableOpacity>
<Text style={[styles.appMessage, styles.appSubMessage]}>
Tap the icon below to start playing Lumpen Radio.
</Text>

+ 13
- 2
src/styles.es6 View File

@ -15,19 +15,30 @@ let Styles = StyleSheet.create({
height: 300,
marginTop: 20,
marginBottom: 20,
borderRadius: 14
borderRadius: 14,
opacity: 0.7
},
appMessage: {
fontSize: 20,
color: "black",
fontFamily: "Avenir-Medium",
alignSelf: "center"
alignSelf: "center",
opacity: 0.7,
padding: 5
},
appSubMessage: {
fontSize: 14,
opacity: 0.7
},
backgroundVideo: {
position: 'absolute',
top: 0,
left: 0,
bottom: 0,
right: 0,
}
});

+ 21
- 12
webpack.config.js View File

@ -1,28 +1,37 @@
// Based almost entirely on the configuration included with
// Based on the configuration included with
// https://github.com/roman01la/react-native-babel
// by Roman Liutikov
var webpack = require("webpack");
var path = require("path");
var webpack = require('webpack');
var path = require('path');
var AnyBarWebpackPlugin = require('anybar-webpack');
module.exports = {
watch: true,
entry: path.join(__dirname, "/src/main.es6"),
externals: [require("./ignored-modules")],
entry: path.join(__dirname, '/src/main.es6'),
module: {
loaders: [
{
test: /\.(js|jsx|es6)$/,
exclude: /node_modules/,
loaders: ["babel-loader?optional=runtime"]
loaders: ['babel-loader?optional=runtime']
},
{
test: /\.js$/,
include: /node_modules\/react-native-video/,
loaders: ['babel-loader?optional=es7.objectRestSpread']
}
]
},
plugins: [new webpack.NoErrorsPlugin()],
resolve: { extensions: ["", ".js", ".jsx", ".es6"] },
output: {
path: path.join(__dirname, "/"),
filename: "index.ios.js",
libraryTarget: "commonjs"
}
path: path.join(__dirname, '/'),
filename: 'index.ios.js',
libraryTarget: 'commonjs'
},
externals: [require('./ignored-modules')],
resolve: { extensions: ['', '.js', '.jsx', '.es6'] },
plugins: [
new webpack.NoErrorsPlugin(),
new AnyBarWebpackPlugin()
],
};

Loading…
Cancel
Save