1
0
Code Issues Pull Requests Packages Projects Releases Wiki Activity GitHub Gitee

Fix example metro config

This commit is contained in:
sunnylqm 2019-10-05 11:52:25 +08:00
parent 4f41e428cb
commit af9b500260
2 changed files with 87 additions and 53 deletions
Example/testHotUpdate

@ -2,10 +2,9 @@ const path = require('path');
const extraNodeModules = {
'react-native': path.resolve(__dirname, 'node_modules/react-native'),
'react-native-update': path.resolve(__dirname, '../..'),
'@babel/runtime': path.resolve(__dirname, 'node_modules/@babel/runtime'),
};
const blacklistRegexes = [
/react-native-update[\/\\]node_modules[\/\\]react-native[\/\\].*/,
];
const watchFolders = [path.resolve(__dirname, '../..')];
module.exports = {
@ -19,9 +18,6 @@ module.exports = {
},
resolver: {
extraNodeModules,
blacklistRE: require('metro-config/src/defaults/blacklist')(
blacklistRegexes,
),
},
watchFolders,
};

@ -1,5 +1,5 @@
import React, {
Component,
import React, {Component} from 'react';
import {
StyleSheet,
Platform,
Text,
@ -26,26 +26,52 @@ import _updateConfig from '../update.json';
const {appKey} = _updateConfig[Platform.OS];
export default class App extends Component {
componentDidMount(){
componentDidMount() {
if (isRolledBack) {
Alert.alert('提示', '刚刚更新失败了,版本被回滚.');
} else if (isFirstTime) {
Alert.alert('提示', '这是当前版本第一次启动,是否要模拟启动失败?将回滚到上一版本', [
{text: '是', onPress: ()=>{throw new Error('模拟启动失败,请重启应用')}},
{text: '否', onPress: ()=>{markSuccess()}},
]);
};
Alert.alert(
'提示',
'这是当前版本第一次启动,是否要模拟启动失败?将回滚到上一版本',
[
{
text: '是',
onPress: () => {
throw new Error('模拟启动失败,请重启应用');
},
},
{
text: '否',
onPress: () => {
markSuccess();
},
},
],
);
}
}
doUpdate = info => {
downloadUpdate(info).then(hash => {
Alert.alert('提示', '下载完毕,是否重启应用?', [
{text: '是', onPress: ()=>{switchVersion(hash);}},
{text: '否',},
{text: '下次启动时', onPress: ()=>{switchVersionLater(hash);}},
]);
}).catch(err => {
Alert.alert('提示', '更新失败.');
});
downloadUpdate(info)
.then(hash => {
Alert.alert('提示', '下载完毕,是否重启应用?', [
{
text: '是',
onPress: () => {
switchVersion(hash);
},
},
{text: '否'},
{
text: '下次启动时',
onPress: () => {
switchVersionLater(hash);
},
},
]);
})
.catch(err => {
Alert.alert('提示', '更新失败.');
});
};
checkUpdate = () => {
@ -53,44 +79,58 @@ export default class App extends Component {
// 开发模式不支持热更新,跳过检查
return;
}
checkUpdate(appKey).then(info => {
if (info.expired) {
Alert.alert('提示', '您的应用版本已更新,请前往应用商店下载新的版本', [
{text: '确定', onPress: ()=>{info.downloadUrl && Linking.openURL(info.downloadUrl)}},
]);
} else if (info.upToDate) {
Alert.alert('提示', '您的应用版本已是最新.');
} else {
Alert.alert('提示', '检查到新的版本'+info.name+',是否下载?\n'+ info.description, [
{text: '是', onPress: ()=>{this.doUpdate(info)}},
{text: '否',},
]);
}
}).catch(err => {
console.warn(err);
});
checkUpdate(appKey)
.then(info => {
if (info.expired) {
Alert.alert('提示', '您的应用版本已更新,请前往应用商店下载新的版本', [
{
text: '确定',
onPress: () => {
info.downloadUrl && Linking.openURL(info.downloadUrl);
},
},
]);
} else if (info.upToDate) {
Alert.alert('提示', '您的应用版本已是最新.');
} else {
Alert.alert(
'提示',
'检查到新的版本' + info.name + ',是否下载?\n' + info.description,
[
{
text: '是',
onPress: () => {
this.doUpdate(info);
},
},
{text: '否'},
],
);
}
})
.catch(err => {
console.warn(err);
});
};
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
欢迎使用热更新服务
</Text>
<Text style={styles.welcome}>欢迎使用热更新服务</Text>
<Image
resizeMode = {'contain'}
source = {require('./assets/shoucang.png')}
style = {styles.image}
resizeMode={'contain'}
source={require('./assets/shoucang.png')}
style={styles.image}
/>
<Text style={styles.instructions}>
这是版本一 {'\n'}
当前包版本号: {packageVersion}{'\n'}
当前版本Hash: {currentVersion||'(空)'}{'\n'}
当前包版本号: {packageVersion}
{'\n'}
当前版本Hash: {currentVersion || '(空)'}
{'\n'}
</Text>
<TouchableOpacity onPress={this.checkUpdate}>
<Text style={styles.instructions}>
点击这里检查更新
</Text>
<Text style={styles.instructions}>点击这里检查更新</Text>
</TouchableOpacity>
</View>
);
@ -114,7 +154,5 @@ const styles = StyleSheet.create({
color: '#333333',
marginBottom: 5,
},
image : {
},
image: {},
});