Как добавить расширение в metro.config.js для Metro Bundler?
Я пытаюсь связать markdown
файлы без больших накладных расходов (т.е. не добавляя их вручную в пакеты ресурсов в Xcode и Android Studio, не используя сторонние зависимости).
Моя идея состояла в том, чтобы require()
чтобы включить их, изменив настройки Metro Bundler в metro.config.js
:
/**
* Metro configuration for React Native
* https://github.com/facebook/react-native
*
* @format
*/
module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
resolver: {
assetExts: [`md`] // < include md
}
};
К сожалению, metro bundler заменяет массив данных по умолчанию на то, что здесь установлено.
Я не хочу явно повторять список расширений активов по умолчанию, который содержит более 20 расширений файлов, тем более, что в противном случае я хочу придерживаться настроек по умолчанию. См.: https://github.com/facebook/metro/blob/master/packages/metro-config/src/defaults/defaults.js.
Присоединение к массиву тоже не работает.
Использование RN 0.59.3.
Что-то я пропускаю?
1 ответ
Нашел ответ о том, как включить значения по умолчанию здесь: /questions/35436611/zagruzka-resursa-s-polzovatelskim-rasshireniem-ne-rabotaet/49400617#49400617.
/**
* Metro configuration for React Native
* https://github.com/facebook/react-native
*
* @format
*/
// get defaults assetExts array
const defaultAssetExts = require("metro-config/src/defaults/defaults").assetExts;
module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
resolver: {
assetExts: [
...defaultAssetExts, // <- array spreading defaults
'md'
]
}
};
Другой способ сделать это - использовать тот же синтаксис, что реагирует с native-svg-transformer.
- Сделайте metro.config.js асинхронным
- вызвать getDefaultConfig
- Вытащите ключ assetExts
пример
const { getDefaultConfig } = require('metro-config')
module.exports = (async () => {
const {
resolver: { assetExts },
} = await getDefaultConfig()
return {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false,
},
}),
},
resolver: {
assetExts: [...assetExts, 'md'],
},
}
})()