Can react-native bundler detect unused files?

Deadly 提交于 2019-11-30 15:07:51

I simply tested it out myself, by building an unsigned-release APK (as mentioned in another post), two times, once with codes like below (the First-Case):

let bigFile;
if ( __DEV__ ) {
  bigFile = require('./big-file.dat');
} else {
  bigFile = require('./small-file.dat');
}

In above, adding ! to the if-statement, like if ( ! __DEV__ ) { ..., caused the APK-size to increase by 50 mb (i.e. the size of ./big-file.dat).


And another time, tested with codes like below (the Second-Case):

let bigFile = require('./big-file.dat');
if ( ! __DEV__ ) {
  bigFile = null;
}

where no matter what I did the APK-size did just keep huge.

Conclusion:

According to the APK-size change, I am sure and can tell that (in the time of writing, namely 2019):

  • The bundler is intelligent enough to handle the First-Case and excludes from the bundle, the file which is only used inside of the inactive if-statement.
  • But on the other hand, it could not optimize out the file, which was used in a little more complex Second-Case (it simply does not keep track of the variable).

Considering above and that the bundler is intelligent enough, and can in some cases even exclude files from the bundle, under other means that we can safely use the constant __DEV__, which react-native framework provides us.

Note: I am using react-native with the type-script template, like "react-native init MyApp --template typescript", but I hope this is even true for the bundler which is used in none-typescript template as well !!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!