考虑一个场景,我们以react-native
模式构建release
应用,同时具有如下代码:
let img;
if ( __DEV__ ) {
img = require('./debug-image.png');
} else {
img = require('./real-image.png');
}
我的问题是,debug-image.png
和real-image.png
是否都将被捆绑到APK
中(即使debug-image.png
从未在其他任何地方使用),或者捆绑器是否检测到是否未使用debug-image.png
文件(并且不将其包括在捆绑软件中)?
答案 0 :(得分:0)
我只是通过构建一个无符号发布的APK
(如another post中所述)自己进行了两次测试,一次使用下面的代码(第一种情况):
let bigFile;
if ( __DEV__ ) {
bigFile = require('./big-file.dat');
} else {
bigFile = require('./small-file.dat');
}
在上面,将!
添加到if语句中,例如if ( ! __DEV__ ) { ...
,导致APK
的大小增加50 mb
(即{{1的大小}}。
再一次,使用下面的代码(第二种情况)进行了测试:
./big-file.dat
无论我做什么,let bigFile = require('./big-file.dat');
if ( ! __DEV__ ) {
bigFile = null;
}
大小都在不断扩大。
根据APK
的大小变化,我确定并且可以告诉您(在撰写本文时,APK
):
考虑到上述问题,并且捆绑器足够智能,在某些情况下甚至可以从捆绑中排除文件,在其他情况下,我们可以安全地使用常量2019
,__DEV__
框架为我们提供了常量
注意:我正在将
react-native
与类型脚本模板一起使用,例如“react-native
”,但我希望对于在非类型脚本模板中使用的捆绑器也是如此! !