Top*_*ter 5 preprocessor assets bundler babeljs react-native
考虑一个场景,在这种情况下,我们react-native使用release模式构建应用程序,同时具有如下代码:
let img;
if ( __DEV__ ) {
img = require('./debug-image.png');
} else {
img = require('./real-image.png');
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,都将debug-image.png和real-image.png获得捆绑到APK(即使debug-image.png是从未使用过其他任何地方),还是所述捆绑检测该debug-image.png文件没有使用(不包括成捆)?
我们可以简单地自己测试一下,通过构建一个未签名的发布APK(如另一篇文章中提到的),两次,一次使用如下代码(第一种情况):
let bigFile;
if ( __DEV__ ) {
bigFile = require('./big-file.dat');
} else {
bigFile = require('./small-file.dat');
}
Run Code Online (Sandbox Code Playgroud)
其中,添加!到上面的 if 语句,例如if ( ! __DEV__ ) { ...,导致APK-size 增加50 MB(即 的大小./big-file.dat)。
还有一次,使用如下代码进行测试(第二种情况):
let bigFile = require('./big-file.dat');
if ( ! __DEV__ ) {
bigFile = null;
}
Run Code Online (Sandbox Code Playgroud)
无论我做什么,APK-size 都保持巨大。
根据APK-size 的变化,我确定并且可以说(在撰写本文时,即2019):
考虑到 bundler 足够智能,在某些情况下甚至可以从 bundle 中排除文件,在其他情况下我们可以安全地使用常量__DEV__(react-native框架提供给我们)。
注意:我正在使用
react-nativetype-script 模板,例如“react-native init MyApp --template typescript”,但我希望这对于在 none-typescript 模板中使用的 bundler 也是如此!
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |