Я просто проверил это сам, построив неподписанный релиз APK
(как упомянуто в в другом посте ), два раза, один раз с кодами, подобными приведенным ниже (первый случай):
let bigFile;
if ( __DEV__ ) {
bigFile = require('./big-file.dat');
} else {
bigFile = require('./small-file.dat');
}
Выше, добавление !
к оператору if, например if ( ! __DEV__ ) { ...
, привело к увеличению размера APK
на 50 mb
(т. Е. Размер ./big-file.dat
).
И в другой раз, проверенный с кодами как ниже (Второй Случай):
let bigFile = require('./big-file.dat');
if ( ! __DEV__ ) {
bigFile = null;
}
, где независимо от того, что я сделал, размер APK
просто оставался огромным.
Вывод:
В соответствии с изменением размера APK
я уверен и могу сказать, что (на момент написания, а именно 2019
):
- Пакет достаточно умен, чтобы обрабатывать первый случай и исключает из пакета файл, который используется только внутри неактивного оператора if.
- Но, с другой стороны, он не может оптимизироватьфайл, который использовался в немного более сложном втором случае (он просто не отслеживает переменную).
МинусыПеречисленные выше и то, что упаковщик достаточно умен, и в некоторых случаях может даже исключить файлы из комплекта, при других условиях мы можем безопасно использовать константу __DEV__
, которую нам предоставляет react-native
framework.
Примечание: я использую react-native
с шаблоном type-script, например, "react-native init MyApp --template typescript
", но я надеюсь, что это верно даже для пакета, который также используется в шаблоне без машинописи !!