Я использую плагин babel для загрузки переменных среды из файла .env
в проект React Native, но изменения в файле .env
не загружаются до импорта файла javascript. они меняются. Мне бы хотелось, чтобы рекомпилятор реагировал на собственный пакет, чтобы этот файл изменился. Я бы принял ответ, что:Скачайте native-native packager для просмотра файла, отличного от javascript
- Просто повторно транслирует весь проект, когда изменяется конкретный файл (
.env
). - Re-transpiles только те файлы, содержащие определенную строку, скажем
foo
Есть простой способ сделать это, написав плагин/промежуточное программное обеспечение? Может быть, отдельный фоновый скрипт, который вызывает события для сторожа, которого слушает реагирующий навстречу упаковщик?
[EDIT в ответ на комментарий]
Мой текущий .babelrc
является следующее, где babel-plugin-react-native-config
это плагин, который я написал, чтобы сделать горячую переменную замену в сочетании с react-native-config
пакетом.
{
"presets": [
"react-native"
],
"plugins": [
["babel-plugin-espower", {
"sourceRoot": "./App"
}],
"transform-flow-strip-types"
],
"env": {
"production": {
"plugins": [
"babel-plugin-unassert",
]
},
"development": {
"plugins": [
["babel-plugin-react-native-config", { envfile: ".env" }]
]
}
}
}
Проблема в том, что реактивный нативный упаковщик просматривает только файлы javascript. Я не думаю, что изменение моей конфигурации столпотворение поможет, если столпотворение не может каким-то говорить вверх реагировать родной или сторож, чтобы сообщить ему, что какой-то файл нужно перекомпилировать ...
[EDIT 2]
Я определил, что реактор-нативный упаковщик использует сторожа для просмотра файлов. Например, когда я watchman watch-list
после запуска упаковщика (и после выполнения watchman watch-del-all
), я получаю
{
"version": "4.6.0",
"roots": [
"/path/to/my/project"
]
}
Более того, когда я удалить эти часы в то время как упаковщик работает, ничего не происходит (с его точки зрения, JS ISN 't меняется, потому что он не получает никаких обновлений), но затем, когда я перезапускаю упаковщик, он воссоздает эти часы и перетаскивает все.
Так что, если есть лучший способ, я должен создать триггер сторожа для обоих (1) убить реактивного упаковщика (2) убить часы в моем каталоге приложений (3) перезапустить узел-узел. Это кажется медленным и взломанным, но я хотел бы видеть, может ли он даже работать.
Я не совсем понял это, чтобы работать в общем виде, но я экспериментирую с различными вещами.
Можете ли вы предоставить более подробную информацию о вашей текущей настройке Babel? Спасибо –
@ Sébastien обновлен с вашими запрошенными деталями. – JeremyKun
Пожалуйста, проверьте, может ли эта нить помочь вам любым способом! https://github.com/mjohnston/react-native-webpack-server/issues/63 – arunprakashpj