Can react-native bundler detect unused files?

后端 未结 1 762
感动是毒
感动是毒 2020-12-31 19:39

Consider having a scenario, where we build our react-native App with release mode while having code like below:

let img;
if ( __DEV         


        
相关标签:
1条回答
  • 2020-12-31 19:53

    Manual Testing:

    We can simply test it out ourselves, 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 !!

    0 讨论(0)
提交回复
热议问题