如何在 metro.config.js 中为 Metro Bundler 添加扩展名?
How to append extension in metro.config.js for Metro Bundler?
我试图在不产生太多开销的情况下捆绑 markdown
文件(即不将它们手动添加到 Xcode 和 Android Studio 中的资产包,不使用第 3 方依赖项).
我的想法是允许 require()
通过调整 metro.config.js
中的 metro bundler 设置来包含它们:
/**
* 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。
有什么我想念的吗?
在此处找到有关如何包含默认值的答案:。
/**
* 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'
]
}
};
您可以使用与 react-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'],
},
}
})()
我试图在不产生太多开销的情况下捆绑 markdown
文件(即不将它们手动添加到 Xcode 和 Android Studio 中的资产包,不使用第 3 方依赖项).
我的想法是允许 require()
通过调整 metro.config.js
中的 metro bundler 设置来包含它们:
/**
* 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。
有什么我想念的吗?
在此处找到有关如何包含默认值的答案:。
/**
* 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'
]
}
};
您可以使用与 react-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'],
},
}
})()