Я использую плагин babel для загрузки переменных среды из файла .env
в проект React Native, но изменения в файле .env
не загружаются, пока файл javascript не импортирует их. Мне бы хотелось, чтобы рекомпилятор реагировал на собственный пакет, чтобы этот файл изменился. Я бы принял ответ, что:
- Просто перераспределяет весь проект, когда изменяется конкретный файл (
.env
). - Повторно транслирует только те файлы, которые содержат определенную строку, например
foo
Есть ли простой способ сделать это, написав плагин/промежуточное ПО? Может быть, отдельный фон script, который вызывает события для сторожа, которого прослушивает перезаписываемый пакетный агент?
[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. Я не думаю, что изменение настройки моего Babel поможет, если только Babel не может как-то говорить вверх, чтобы реагировать на родного или сторожа, чтобы сообщить ему, что какой-то файл нуждается в перекомпиляции...
[ИЗМЕНИТЬ 2]
Я определил, что накладной упаковщик использует сторожа для просмотра файлов. Например, когда я делаю watchman watch-list
после запуска упаковщика (и после выполнения watchman watch-del-all
), я получаю
{
"version": "4.6.0",
"roots": [
"/path/to/my/project"
]
}
Кроме того, когда я удаляю эти часы во время работы пакета, ничего не происходит (с его точки зрения, js не меняется, потому что он не получает никаких обновлений), но затем, когда я перезапускаю упаковщик, он воссоздает эти часы и переворачивает все.
Итак, кажется, что, если нет лучшего способа, я должен создать триггер сторожа для обоих (1) убить реактивный упаковщик (2) убить часы в моем каталоге приложений (3) перезапустить упаковщик node, Это кажется медленным и взломанным, но я хотел бы видеть, может ли он даже работать.
Я не совсем понял, что это работает в общем виде, но я экспериментирую с разными вещами.