8

オーバーヘッドをあまり発生させずにファイルをバンドルしようとしてmarkdownいます (つまり、サードパーティの依存関係を使用せずに、Xcode と Android Studio のアセット バンドルにファイルを手動で追加しないでください)。

私のアイデアはrequire()、次のメトロバンドラー設定を調整してそれらを含めることを許可することでした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 を使用。

不足しているものはありますか?

4

2 に答える 2

15

ここにデフォルトを含める方法に関する回答が見つかりました: https://stackoverflow.com/a/55118654/844907

/**
 * 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'
        ]
    }
};
于 2019-04-03T06:29:39.543 に答える