@vxrn/vite-plugin-metro 1.1.504 → 1.1.506
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/babel-plugins/import-meta-env-plugin.cjs +65 -0
- package/dist/cjs/babel-plugins/import-meta-env-plugin.js +52 -0
- package/dist/cjs/babel-plugins/import-meta-env-plugin.js.map +6 -0
- package/dist/cjs/babel-plugins/import-meta-env-plugin.native.js +62 -0
- package/dist/cjs/babel-plugins/import-meta-env-plugin.native.js.map +6 -0
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.cjs +47 -0
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.js +40 -0
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.js.map +6 -0
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js +53 -0
- package/dist/cjs/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +6 -0
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.cjs +110 -0
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.js +96 -0
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.js.map +6 -0
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js +102 -0
- package/dist/cjs/metro-config/getMetroConfigFromViteConfig.native.js.map +6 -0
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.cjs +48 -0
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.js +46 -0
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.js.map +6 -0
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js +50 -0
- package/dist/cjs/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js.map +6 -0
- package/dist/cjs/metro-config/types.cjs +16 -0
- package/dist/cjs/metro-config/types.js +14 -0
- package/dist/cjs/metro-config/types.js.map +6 -0
- package/dist/cjs/metro-config/types.native.js +15 -0
- package/dist/cjs/metro-config/types.native.js.map +6 -0
- package/dist/cjs/plugins/metroPlugin.cjs +8 -84
- package/dist/cjs/plugins/metroPlugin.js +6 -90
- package/dist/cjs/plugins/metroPlugin.js.map +1 -1
- package/dist/cjs/plugins/metroPlugin.native.js +6 -82
- package/dist/cjs/plugins/metroPlugin.native.js.map +2 -2
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.cjs +86 -0
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.js +75 -0
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.js +114 -0
- package/dist/cjs/rn-commands/bundle/assetCatalogIOS.native.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/assetPathUtils.cjs +63 -0
- package/dist/cjs/rn-commands/bundle/assetPathUtils.js +62 -0
- package/dist/cjs/rn-commands/bundle/assetPathUtils.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/assetPathUtils.native.js +70 -0
- package/dist/cjs/rn-commands/bundle/assetPathUtils.native.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/buildBundle.cjs +50 -0
- package/dist/cjs/rn-commands/bundle/buildBundle.js +47 -0
- package/dist/cjs/rn-commands/bundle/buildBundle.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/buildBundle.native.js +46 -0
- package/dist/cjs/rn-commands/bundle/buildBundle.native.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.cjs +76 -0
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.js +66 -0
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.js +69 -0
- package/dist/cjs/rn-commands/bundle/buildBundleWithConfig.native.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.cjs +43 -0
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.js +40 -0
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.js +60 -0
- package/dist/cjs/rn-commands/bundle/filterPlatformAssetScales.native.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.cjs +44 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.js +34 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.js +35 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathAndroid.native.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.cjs +47 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.js +40 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.js +41 -0
- package/dist/cjs/rn-commands/bundle/getAssetDestPathIOS.native.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.cjs +39 -0
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.js +37 -0
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.js +45 -0
- package/dist/cjs/rn-commands/bundle/getBuildBundleFn.native.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/index.cjs +28 -0
- package/dist/cjs/rn-commands/bundle/index.js +22 -0
- package/dist/cjs/rn-commands/bundle/index.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/index.native.js +28 -0
- package/dist/cjs/rn-commands/bundle/index.native.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/saveAssets.cjs +103 -0
- package/dist/cjs/rn-commands/bundle/saveAssets.js +96 -0
- package/dist/cjs/rn-commands/bundle/saveAssets.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/saveAssets.native.js +107 -0
- package/dist/cjs/rn-commands/bundle/saveAssets.native.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/types.cjs +16 -0
- package/dist/cjs/rn-commands/bundle/types.js +14 -0
- package/dist/cjs/rn-commands/bundle/types.js.map +6 -0
- package/dist/cjs/rn-commands/bundle/types.native.js +15 -0
- package/dist/cjs/rn-commands/bundle/types.native.js.map +6 -0
- package/dist/cjs/rn-commands/index.cjs +37 -0
- package/dist/cjs/rn-commands/index.js +29 -0
- package/dist/cjs/rn-commands/index.js.map +6 -0
- package/dist/cjs/rn-commands/index.native.js +34 -0
- package/dist/cjs/rn-commands/index.native.js.map +6 -0
- package/dist/cjs/transformer/babel-transformer.cjs +5 -1
- package/dist/cjs/transformer/babel-transformer.js +8 -1
- package/dist/cjs/transformer/babel-transformer.js.map +1 -1
- package/dist/cjs/transformer/babel-transformer.native.js +6 -1
- package/dist/cjs/transformer/babel-transformer.native.js.map +2 -2
- package/dist/cjs/transformer/types.cjs +16 -0
- package/dist/cjs/transformer/types.js +14 -0
- package/dist/cjs/transformer/types.js.map +6 -0
- package/dist/cjs/transformer/types.native.js +15 -0
- package/dist/cjs/transformer/types.native.js.map +6 -0
- package/dist/esm/babel-plugins/import-meta-env-plugin.js +29 -0
- package/dist/esm/babel-plugins/import-meta-env-plugin.js.map +6 -0
- package/dist/esm/babel-plugins/import-meta-env-plugin.mjs +30 -0
- package/dist/esm/babel-plugins/import-meta-env-plugin.mjs.map +1 -0
- package/dist/esm/babel-plugins/import-meta-env-plugin.native.js +38 -0
- package/dist/esm/babel-plugins/import-meta-env-plugin.native.js.map +1 -0
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.js +24 -0
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.js.map +6 -0
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs +24 -0
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.mjs.map +1 -0
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js +27 -0
- package/dist/esm/metro-config/getMetroBabelConfigFromViteConfig.native.js.map +1 -0
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.js +82 -0
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.js.map +6 -0
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs +87 -0
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.mjs.map +1 -0
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js +92 -0
- package/dist/esm/metro-config/getMetroConfigFromViteConfig.native.js.map +1 -0
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.js +30 -0
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.js.map +6 -0
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs +25 -0
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.mjs.map +1 -0
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js +26 -0
- package/dist/esm/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.native.js.map +1 -0
- package/dist/esm/metro-config/types.js +1 -0
- package/dist/esm/metro-config/types.js.map +6 -0
- package/dist/esm/metro-config/types.mjs +2 -0
- package/dist/esm/metro-config/types.mjs.map +1 -0
- package/dist/esm/metro-config/types.native.js +2 -0
- package/dist/esm/metro-config/types.native.js.map +1 -0
- package/dist/esm/plugins/metroPlugin.js +8 -92
- package/dist/esm/plugins/metroPlugin.js.map +1 -1
- package/dist/esm/plugins/metroPlugin.mjs +9 -85
- package/dist/esm/plugins/metroPlugin.mjs.map +1 -1
- package/dist/esm/plugins/metroPlugin.native.js +9 -91
- package/dist/esm/plugins/metroPlugin.native.js.map +1 -1
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.js +53 -0
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.js.map +6 -0
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.mjs +49 -0
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.native.js +83 -0
- package/dist/esm/rn-commands/bundle/assetCatalogIOS.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/assetPathUtils.js +46 -0
- package/dist/esm/rn-commands/bundle/assetPathUtils.js.map +6 -0
- package/dist/esm/rn-commands/bundle/assetPathUtils.mjs +40 -0
- package/dist/esm/rn-commands/bundle/assetPathUtils.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/assetPathUtils.native.js +42 -0
- package/dist/esm/rn-commands/bundle/assetPathUtils.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/buildBundle.js +34 -0
- package/dist/esm/rn-commands/bundle/buildBundle.js.map +6 -0
- package/dist/esm/rn-commands/bundle/buildBundle.mjs +27 -0
- package/dist/esm/rn-commands/bundle/buildBundle.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/buildBundle.native.js +28 -0
- package/dist/esm/rn-commands/bundle/buildBundle.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.js +46 -0
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.js.map +6 -0
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.mjs +42 -0
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.native.js +46 -0
- package/dist/esm/rn-commands/bundle/buildBundleWithConfig.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.js +24 -0
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.js.map +6 -0
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.mjs +20 -0
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.native.js +38 -0
- package/dist/esm/rn-commands/bundle/filterPlatformAssetScales.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.js +11 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.js.map +6 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.mjs +10 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.native.js +10 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathAndroid.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.js +16 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.js.map +6 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.mjs +13 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.native.js +13 -0
- package/dist/esm/rn-commands/bundle/getAssetDestPathIOS.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.js +22 -0
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.js.map +6 -0
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.mjs +16 -0
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.native.js +20 -0
- package/dist/esm/rn-commands/bundle/getBuildBundleFn.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/index.js +7 -0
- package/dist/esm/rn-commands/bundle/index.js.map +6 -0
- package/dist/esm/rn-commands/bundle/index.mjs +4 -0
- package/dist/esm/rn-commands/bundle/index.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/index.native.js +4 -0
- package/dist/esm/rn-commands/bundle/index.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/saveAssets.js +77 -0
- package/dist/esm/rn-commands/bundle/saveAssets.js.map +6 -0
- package/dist/esm/rn-commands/bundle/saveAssets.mjs +69 -0
- package/dist/esm/rn-commands/bundle/saveAssets.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/saveAssets.native.js +86 -0
- package/dist/esm/rn-commands/bundle/saveAssets.native.js.map +1 -0
- package/dist/esm/rn-commands/bundle/types.js +1 -0
- package/dist/esm/rn-commands/bundle/types.js.map +6 -0
- package/dist/esm/rn-commands/bundle/types.mjs +2 -0
- package/dist/esm/rn-commands/bundle/types.mjs.map +1 -0
- package/dist/esm/rn-commands/bundle/types.native.js +2 -0
- package/dist/esm/rn-commands/bundle/types.native.js.map +1 -0
- package/dist/esm/rn-commands/index.js +5 -0
- package/dist/esm/rn-commands/index.js.map +6 -0
- package/dist/esm/rn-commands/index.mjs +3 -0
- package/dist/esm/rn-commands/index.mjs.map +1 -0
- package/dist/esm/rn-commands/index.native.js +3 -0
- package/dist/esm/rn-commands/index.native.js.map +1 -0
- package/dist/esm/transformer/babel-transformer.js +8 -1
- package/dist/esm/transformer/babel-transformer.js.map +1 -1
- package/dist/esm/transformer/babel-transformer.mjs +5 -1
- package/dist/esm/transformer/babel-transformer.mjs.map +1 -1
- package/dist/esm/transformer/babel-transformer.native.js +6 -2
- package/dist/esm/transformer/babel-transformer.native.js.map +1 -1
- package/dist/esm/transformer/types.js +1 -0
- package/dist/esm/transformer/types.js.map +6 -0
- package/dist/esm/transformer/types.mjs +2 -0
- package/dist/esm/transformer/types.mjs.map +1 -0
- package/dist/esm/transformer/types.native.js +2 -0
- package/dist/esm/transformer/types.native.js.map +1 -0
- package/package.json +19 -4
- package/src/babel-plugins/import-meta-env-plugin.ts +56 -0
- package/src/metro-config/getMetroBabelConfigFromViteConfig.ts +50 -0
- package/src/metro-config/getMetroConfigFromViteConfig.ts +144 -0
- package/src/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.ts +44 -0
- package/src/metro-config/types.ts +9 -0
- package/src/plugins/metroPlugin.ts +13 -144
- package/src/rn-commands/bundle/README.md +2 -0
- package/src/rn-commands/bundle/assetCatalogIOS.ts +73 -0
- package/src/rn-commands/bundle/assetPathUtils.ts +76 -0
- package/src/rn-commands/bundle/buildBundle.ts +57 -0
- package/src/rn-commands/bundle/buildBundleWithConfig.ts +82 -0
- package/src/rn-commands/bundle/filterPlatformAssetScales.ts +41 -0
- package/src/rn-commands/bundle/getAssetDestPathAndroid.ts +19 -0
- package/src/rn-commands/bundle/getAssetDestPathIOS.ts +24 -0
- package/src/rn-commands/bundle/getBuildBundleFn.ts +31 -0
- package/src/rn-commands/bundle/index.ts +2 -0
- package/src/rn-commands/bundle/saveAssets.ts +114 -0
- package/src/rn-commands/bundle/types.ts +22 -0
- package/src/rn-commands/index.ts +1 -0
- package/src/transformer/babel-transformer.ts +18 -3
- package/src/transformer/types.ts +18 -0
- package/types/babel-plugins/import-meta-env-plugin.d.ts +7 -0
- package/types/babel-plugins/import-meta-env-plugin.d.ts.map +1 -0
- package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts +4 -0
- package/types/metro-config/getMetroBabelConfigFromViteConfig.d.ts.map +1 -0
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts +5 -0
- package/types/metro-config/getMetroConfigFromViteConfig.d.ts.map +1 -0
- package/types/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.d.ts +5 -0
- package/types/metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions.d.ts.map +1 -0
- package/types/metro-config/types.d.ts +9 -0
- package/types/metro-config/types.d.ts.map +1 -0
- package/types/plugins/metroPlugin.d.ts +1 -1
- package/types/plugins/metroPlugin.d.ts.map +1 -1
- package/types/rn-commands/bundle/assetCatalogIOS.d.ts +21 -0
- package/types/rn-commands/bundle/assetCatalogIOS.d.ts.map +1 -0
- package/types/rn-commands/bundle/assetPathUtils.d.ts +27 -0
- package/types/rn-commands/bundle/assetPathUtils.d.ts.map +1 -0
- package/types/rn-commands/bundle/buildBundle.d.ts +8 -0
- package/types/rn-commands/bundle/buildBundle.d.ts.map +1 -0
- package/types/rn-commands/bundle/buildBundleWithConfig.d.ts +9 -0
- package/types/rn-commands/bundle/buildBundleWithConfig.d.ts.map +1 -0
- package/types/rn-commands/bundle/filterPlatformAssetScales.d.ts +9 -0
- package/types/rn-commands/bundle/filterPlatformAssetScales.d.ts.map +1 -0
- package/types/rn-commands/bundle/getAssetDestPathAndroid.d.ts +10 -0
- package/types/rn-commands/bundle/getAssetDestPathAndroid.d.ts.map +1 -0
- package/types/rn-commands/bundle/getAssetDestPathIOS.d.ts +10 -0
- package/types/rn-commands/bundle/getAssetDestPathIOS.d.ts.map +1 -0
- package/types/rn-commands/bundle/getBuildBundleFn.d.ts +7 -0
- package/types/rn-commands/bundle/getBuildBundleFn.d.ts.map +1 -0
- package/types/rn-commands/bundle/index.d.ts +3 -0
- package/types/rn-commands/bundle/index.d.ts.map +1 -0
- package/types/rn-commands/bundle/saveAssets.d.ts +4 -0
- package/types/rn-commands/bundle/saveAssets.d.ts.map +1 -0
- package/types/rn-commands/bundle/types.d.ts +23 -0
- package/types/rn-commands/bundle/types.d.ts.map +1 -0
- package/types/rn-commands/index.d.ts +2 -0
- package/types/rn-commands/index.d.ts.map +1 -0
- package/types/transformer/babel-transformer.d.ts.map +1 -1
- package/types/transformer/types.d.ts +16 -0
- package/types/transformer/types.d.ts.map +1 -0
|
@@ -81,8 +81,12 @@ var transform = function (param) {
|
|
|
81
81
|
// `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`. Could make sense to move this to `babel-preset-expo` too.
|
|
82
82
|
plugins
|
|
83
83
|
} = param,
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
customOptionsFromVite = function () {
|
|
85
|
+
var _options_customTransformOptions,
|
|
86
|
+
c = (_options_customTransformOptions = options.customTransformOptions) === null || _options_customTransformOptions === void 0 ? void 0 : _options_customTransformOptions.vite;
|
|
87
|
+
if (!c || typeof c != "object") throw new Error(`[vite-plugin-metro/babel-transformer]: Expect options.customTransformOptions.vite to be an object, but got ${typeof c}.`);
|
|
88
|
+
return c;
|
|
89
|
+
}(),
|
|
86
90
|
babelConfigFromVitePlugin = customOptionsFromVite.babelConfig || {},
|
|
87
91
|
OLD_BABEL_ENV = process.env.BABEL_ENV;
|
|
88
92
|
process.env.BABEL_ENV = options.dev ? "development" : process.env.BABEL_ENV || "production";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["assert","loadBabelConfig","transformSync","debug","require","isCustomTruthy","value","String","memoize","fn","cache","Map","_len","arguments","length","args","Array","_key","key","JSON","stringify","has","get","result","set","memoizeWarning","message","getBabelCaller","param","filename","options","_options_customTransformOptions","_options_customTransformOptions1","_options_customTransformOptions2","_options_customTransformOptions3","_options_customTransformOptions4","_options_customTransformOptions5","_options_customTransformOptions6","_options_customTransformOptions7","_options_customTransformOptions8","isNodeModule","includes","isReactServer","customTransformOptions","environment","isGenericServer","isServer","routerRoot","decodeURI","name","bundler","platform","baseUrl","isDev","dev","preserveEnvVars","asyncRoutes","engine","stringOrUndefined","projectRoot","isHMREnabled","hot","supportsStaticESM","optimize","experimentalImportSupport","supportsReactCompiler","reactCompiler","transform","src","plugins","customOptionsFromVite","vite","babelConfigFromVitePlugin","babelConfig","OLD_BABEL_ENV","process","env","BABEL_ENV","sourceType","ast","code","cloneInputAst","cwd","highlightCode","babelrc","enableBabelRCLookup","caller","metadata"],"sources":["../../../src/transformer/babel-transformer.ts"],"sourcesContent":[null],"mappings":"AAaA,OAAOA,MAAA,MAAY;AAGnB,SAASC,eAAA,QAAuB;AAChC,SAASC,aAAA,QAAqB;
|
|
1
|
+
{"version":3,"names":["assert","loadBabelConfig","transformSync","debug","require","isCustomTruthy","value","String","memoize","fn","cache","Map","_len","arguments","length","args","Array","_key","key","JSON","stringify","has","get","result","set","memoizeWarning","message","getBabelCaller","param","filename","options","_options_customTransformOptions","_options_customTransformOptions1","_options_customTransformOptions2","_options_customTransformOptions3","_options_customTransformOptions4","_options_customTransformOptions5","_options_customTransformOptions6","_options_customTransformOptions7","_options_customTransformOptions8","isNodeModule","includes","isReactServer","customTransformOptions","environment","isGenericServer","isServer","routerRoot","decodeURI","name","bundler","platform","baseUrl","isDev","dev","preserveEnvVars","asyncRoutes","engine","stringOrUndefined","projectRoot","isHMREnabled","hot","supportsStaticESM","optimize","experimentalImportSupport","supportsReactCompiler","reactCompiler","transform","src","plugins","customOptionsFromVite","c","vite","Error","babelConfigFromVitePlugin","babelConfig","OLD_BABEL_ENV","process","env","BABEL_ENV","sourceType","ast","code","cloneInputAst","cwd","highlightCode","babelrc","enableBabelRCLookup","caller","metadata"],"sources":["../../../src/transformer/babel-transformer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vxrn/vite-plugin-metro",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.506",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cjs",
|
|
@@ -11,14 +11,24 @@
|
|
|
11
11
|
"./package.json": "./package.json",
|
|
12
12
|
".": {
|
|
13
13
|
"types": "./types/index.d.ts",
|
|
14
|
-
"require": "./dist/cjs/index.
|
|
14
|
+
"require": "./dist/cjs/index.cjs",
|
|
15
15
|
"import": "./dist/esm/index.mjs"
|
|
16
16
|
},
|
|
17
|
+
"./rn-commands": {
|
|
18
|
+
"types": "./types/rn-commands/index.d.ts",
|
|
19
|
+
"import": "./dist/esm/rn-commands/index.mjs",
|
|
20
|
+
"require": "./dist/cjs/rn-commands/index.cjs"
|
|
21
|
+
},
|
|
17
22
|
"./babel-transformer": {
|
|
18
23
|
"types": "./types/transformer/babel-transformer.d.ts",
|
|
19
24
|
"import": "./dist/esm/transformer/babel-transformer.mjs",
|
|
20
25
|
"require": "./dist/cjs/transformer/babel-transformer.cjs"
|
|
21
26
|
},
|
|
27
|
+
"./babel-plugins/import-meta-env-plugin": {
|
|
28
|
+
"types": "./types/babel-plugins/import-meta-env-plugin.d.ts",
|
|
29
|
+
"import": "./dist/esm/babel-plugins/import-meta-env-plugin.mjs",
|
|
30
|
+
"require": "./dist/cjs/babel-plugins/import-meta-env-plugin.cjs"
|
|
31
|
+
},
|
|
22
32
|
"./empty": {
|
|
23
33
|
"import": "./empty.js",
|
|
24
34
|
"require": "./empty.js"
|
|
@@ -32,6 +42,7 @@
|
|
|
32
42
|
],
|
|
33
43
|
"scripts": {
|
|
34
44
|
"build": "tamagui-build",
|
|
45
|
+
"build:workaround-fix-nodejs-22-defaults-to-esm": "echo '{\n \"type\": \"commonjs\"\n}' > dist/cjs/package.json",
|
|
35
46
|
"watch": "yarn build --watch",
|
|
36
47
|
"check": "yarn depcheck",
|
|
37
48
|
"clean": "tamagui-build clean",
|
|
@@ -41,12 +52,15 @@
|
|
|
41
52
|
"@expo/metro-config": "^0.19.8",
|
|
42
53
|
"expo": "^53.0.4",
|
|
43
54
|
"metro": "^0.82",
|
|
55
|
+
"metro-config": "*",
|
|
44
56
|
"react-native": "~0.79.2",
|
|
45
57
|
"vite": "^6.1.0"
|
|
46
58
|
},
|
|
47
59
|
"dependencies": {
|
|
48
60
|
"@babel/core": "^7.26.8",
|
|
49
|
-
"@
|
|
61
|
+
"@babel/helper-plugin-utils": "^7.26.8",
|
|
62
|
+
"@babel/types": "^7.26.8",
|
|
63
|
+
"@vxrn/debug": "1.1.506",
|
|
50
64
|
"babel-preset-expo": "*",
|
|
51
65
|
"launch-editor": "^2.10.0",
|
|
52
66
|
"picocolors": "^1.0.0"
|
|
@@ -55,7 +69,8 @@
|
|
|
55
69
|
"@biomejs/biome": "1.9.4",
|
|
56
70
|
"@expo/metro-config": "^0.19.8",
|
|
57
71
|
"@react-native/dev-middleware": "~0.79.2",
|
|
58
|
-
"@tamagui/build": "^1.
|
|
72
|
+
"@tamagui/build": "^1.132.7",
|
|
73
|
+
"@types/babel__helper-plugin-utils": "^7",
|
|
59
74
|
"@types/node": "^22.1.0",
|
|
60
75
|
"depcheck": "^1.4.7",
|
|
61
76
|
"expo": "^53.0.4",
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { declare } from '@babel/helper-plugin-utils'
|
|
2
|
+
import * as t from '@babel/types'
|
|
3
|
+
import type { PluginObj } from '@babel/core'
|
|
4
|
+
|
|
5
|
+
type PluginOptions = {
|
|
6
|
+
env?: Record<string, string | undefined>
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const importMetaEnvPlugin = declare<PluginOptions>((api, options): PluginObj => {
|
|
10
|
+
api.assertVersion(7)
|
|
11
|
+
|
|
12
|
+
return {
|
|
13
|
+
name: 'import-meta-env',
|
|
14
|
+
visitor: {
|
|
15
|
+
MemberExpression(path) {
|
|
16
|
+
const { node } = path
|
|
17
|
+
|
|
18
|
+
const isImportMeta =
|
|
19
|
+
t.isMetaProperty(node.object) &&
|
|
20
|
+
node.object.meta.name === 'import' &&
|
|
21
|
+
node.object.property.name === 'meta'
|
|
22
|
+
|
|
23
|
+
// Replace import.meta.env
|
|
24
|
+
if (isImportMeta && t.isIdentifier(node.property, { name: 'env' })) {
|
|
25
|
+
const envEntries = Object.entries(options.env ?? {}).map(([key, value]) =>
|
|
26
|
+
t.objectProperty(t.identifier(key), value === undefined ? t.identifier('undefined') : t.valueToNode(value))
|
|
27
|
+
)
|
|
28
|
+
path.replaceWith(t.objectExpression(envEntries))
|
|
29
|
+
return
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Replace import.meta.env.*
|
|
33
|
+
if (
|
|
34
|
+
t.isMemberExpression(node.object) &&
|
|
35
|
+
t.isMetaProperty(node.object.object) &&
|
|
36
|
+
node.object.object.meta.name === 'import' &&
|
|
37
|
+
node.object.object.property.name === 'meta' &&
|
|
38
|
+
t.isIdentifier(node.object.property, { name: 'env' })
|
|
39
|
+
) {
|
|
40
|
+
const envKey = t.isIdentifier(node.property)
|
|
41
|
+
? node.property.name
|
|
42
|
+
: t.isStringLiteral(node.property)
|
|
43
|
+
? node.property.value
|
|
44
|
+
: null
|
|
45
|
+
|
|
46
|
+
if (!envKey) return
|
|
47
|
+
|
|
48
|
+
const value = options.env?.[envKey]
|
|
49
|
+
path.replaceWith(value === undefined ? t.identifier('undefined') : t.valueToNode(value))
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
export default importMetaEnvPlugin
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ResolvedConfig } from 'vite'
|
|
2
|
+
|
|
3
|
+
// For Metro and Expo, we only import types here.
|
|
4
|
+
// We use `projectImport` to dynamically import the actual modules
|
|
5
|
+
// at runtime to ensure they are loaded from the user's project root.
|
|
6
|
+
import type { loadConfig as loadConfigT } from 'metro'
|
|
7
|
+
import type { getDefaultConfig as getDefaultConfigT } from '@expo/metro-config'
|
|
8
|
+
|
|
9
|
+
import { projectImport, projectResolve } from '../utils/projectImport'
|
|
10
|
+
import { getTerminalReporter } from '../utils/getTerminalReporter'
|
|
11
|
+
import { patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName } from '../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName'
|
|
12
|
+
import type { MetroPluginOptions } from '../plugins/metroPlugin'
|
|
13
|
+
import type { ExtraConfig, MetroConfigExtended } from './types'
|
|
14
|
+
import type { TransformOptions } from '@babel/core'
|
|
15
|
+
|
|
16
|
+
type MetroInputConfig = Parameters<typeof loadConfigT>[1]
|
|
17
|
+
|
|
18
|
+
export function getMetroBabelConfigFromViteConfig(config: ResolvedConfig): TransformOptions {
|
|
19
|
+
const importMetaEnv = {
|
|
20
|
+
// https://vite.dev/guide/env-and-mode.html#built-in-constants
|
|
21
|
+
MODE: config.mode,
|
|
22
|
+
BASE_URL: 'https://vxrn.not.supported.yet',
|
|
23
|
+
PROD: config.mode === 'production',
|
|
24
|
+
DEV: config.mode === 'development',
|
|
25
|
+
SSR: false,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Collect from process.env
|
|
29
|
+
const envPrefix = config.envPrefix || 'VITE_'
|
|
30
|
+
if (envPrefix) {
|
|
31
|
+
Object.keys(process.env).forEach((key) => {
|
|
32
|
+
const shouldInclude = Array.isArray(envPrefix)
|
|
33
|
+
? envPrefix.some((p) => key.startsWith(p))
|
|
34
|
+
: key.startsWith(envPrefix)
|
|
35
|
+
|
|
36
|
+
if (shouldInclude) {
|
|
37
|
+
importMetaEnv[key] = process.env[key]
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
return {
|
|
43
|
+
plugins: [
|
|
44
|
+
// Note that we can only pass Babel plugins by name here,
|
|
45
|
+
// since Metro will run Babel transformers in different threads
|
|
46
|
+
// and plugins are not serializable, it seems.
|
|
47
|
+
['@vxrn/vite-plugin-metro/babel-plugins/import-meta-env-plugin', { env: importMetaEnv }],
|
|
48
|
+
],
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { ResolvedConfig } from 'vite'
|
|
2
|
+
|
|
3
|
+
// For Metro and Expo, we only import types here.
|
|
4
|
+
// We use `projectImport` to dynamically import the actual modules
|
|
5
|
+
// at runtime to ensure they are loaded from the user's project root.
|
|
6
|
+
import type { loadConfig as loadConfigT } from 'metro'
|
|
7
|
+
import type { getDefaultConfig as getDefaultConfigT } from '@expo/metro-config'
|
|
8
|
+
|
|
9
|
+
import { projectImport, projectResolve } from '../utils/projectImport'
|
|
10
|
+
import { getTerminalReporter } from '../utils/getTerminalReporter'
|
|
11
|
+
import { patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName } from '../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName'
|
|
12
|
+
import type { MetroPluginOptions } from '../plugins/metroPlugin'
|
|
13
|
+
import type { ExtraConfig, MetroConfigExtended } from './types'
|
|
14
|
+
|
|
15
|
+
type MetroInputConfig = Parameters<typeof loadConfigT>[1]
|
|
16
|
+
|
|
17
|
+
export async function getMetroConfigFromViteConfig(
|
|
18
|
+
config: ResolvedConfig,
|
|
19
|
+
metroPluginOptions: MetroPluginOptions
|
|
20
|
+
): Promise<MetroConfigExtended> {
|
|
21
|
+
const extraConfig: ExtraConfig = {}
|
|
22
|
+
const { root: projectRoot } = config
|
|
23
|
+
const { mainModuleName, argv, defaultConfigOverrides } = metroPluginOptions
|
|
24
|
+
|
|
25
|
+
const { loadConfig } = await projectImport<{
|
|
26
|
+
loadConfig: typeof loadConfigT
|
|
27
|
+
}>(projectRoot, 'metro')
|
|
28
|
+
const { getDefaultConfig } = await projectImport<{
|
|
29
|
+
getDefaultConfig: typeof getDefaultConfigT
|
|
30
|
+
}>(projectRoot, '@expo/metro-config')
|
|
31
|
+
|
|
32
|
+
const _defaultConfig: MetroInputConfig = getDefaultConfig(projectRoot) as any
|
|
33
|
+
|
|
34
|
+
if (mainModuleName) {
|
|
35
|
+
const origRewriteRequestUrl = _defaultConfig!.server!.rewriteRequestUrl!
|
|
36
|
+
|
|
37
|
+
// We need to patch Expo's default `config.server.rewriteRequestUrl`
|
|
38
|
+
// to change how URLs like '/.expo/.virtual-metro-entry.bundle?' are
|
|
39
|
+
// rewritten.
|
|
40
|
+
// But since that function is difficult to override, here we borrow
|
|
41
|
+
// the ExpoGoManifestHandlerMiddleware and use it to resolve the
|
|
42
|
+
// URL to the main module name.
|
|
43
|
+
const resolveMainModuleName: (p: { platform: 'ios' | 'android' }) => string =
|
|
44
|
+
await (async () => {
|
|
45
|
+
const ExpoGoManifestHandlerMiddleware = (
|
|
46
|
+
await projectImport(
|
|
47
|
+
projectRoot,
|
|
48
|
+
'@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js'
|
|
49
|
+
)
|
|
50
|
+
).default.ExpoGoManifestHandlerMiddleware
|
|
51
|
+
|
|
52
|
+
const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {})
|
|
53
|
+
|
|
54
|
+
patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(
|
|
55
|
+
manifestHandlerMiddleware,
|
|
56
|
+
mainModuleName
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
return (p) => {
|
|
60
|
+
return manifestHandlerMiddleware.resolveMainModuleName({
|
|
61
|
+
pkg: { main: mainModuleName },
|
|
62
|
+
platform: p.platform,
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
})()
|
|
66
|
+
|
|
67
|
+
extraConfig.getResolveMainModuleName = resolveMainModuleName
|
|
68
|
+
|
|
69
|
+
_defaultConfig!.server!.rewriteRequestUrl = (url) => {
|
|
70
|
+
if (url.includes('/.expo/.virtual-metro-entry.bundle?')) {
|
|
71
|
+
const resolvedMainModulePath = resolveMainModuleName({
|
|
72
|
+
platform: 'ios', // we probably need to handle android here, but currently in our use case this won't affect the result
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
return url.replace('.expo/.virtual-metro-entry', resolvedMainModulePath)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return origRewriteRequestUrl(url)
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const defaultConfig: MetroInputConfig = {
|
|
83
|
+
..._defaultConfig,
|
|
84
|
+
resolver: {
|
|
85
|
+
..._defaultConfig?.resolver,
|
|
86
|
+
sourceExts: ['js', 'jsx', 'json', 'ts', 'tsx', 'mjs', 'cjs'], // `one` related packages are using `.mjs` extensions. This somehow fixes `.native` files not being resolved correctly when `.mjs` files are present.
|
|
87
|
+
resolveRequest: (context, moduleName, platform) => {
|
|
88
|
+
const origResolveRequestFn =
|
|
89
|
+
_defaultConfig?.resolver?.resolveRequest || context.resolveRequest
|
|
90
|
+
|
|
91
|
+
// HACK: Do not assert the "import" condition for `@babel/runtime`. This
|
|
92
|
+
// is a workaround for ESM <-> CJS interop, as we need the CJS versions of
|
|
93
|
+
// `@babel/runtime` helpers.
|
|
94
|
+
//
|
|
95
|
+
// This hack is originally made in Metro and was removed in `v0.81.3`, but
|
|
96
|
+
// we somehow still need it.
|
|
97
|
+
// See: https://github.com/facebook/metro/commit/9552a64a0487af64cd86d8591e203a55c59c9686#diff-b03f1b511a2be7abd755b9c2561e47f513f84931466f2cc20a17a4238d70f12bL370-L378
|
|
98
|
+
//
|
|
99
|
+
// Resolves the "TypeError: _interopRequireDefault is not a function (it is Object)" error.
|
|
100
|
+
if (moduleName.startsWith('@babel/runtime')) {
|
|
101
|
+
const contextOverride = {
|
|
102
|
+
...context,
|
|
103
|
+
unstable_conditionNames: context.unstable_conditionNames.filter((c) => c !== 'import'),
|
|
104
|
+
}
|
|
105
|
+
return origResolveRequestFn(contextOverride, moduleName, platform)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return origResolveRequestFn(context, moduleName, platform)
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
transformer: {
|
|
112
|
+
..._defaultConfig?.transformer,
|
|
113
|
+
babelTransformerPath: projectResolve(
|
|
114
|
+
projectRoot,
|
|
115
|
+
'@vxrn/vite-plugin-metro/babel-transformer'
|
|
116
|
+
),
|
|
117
|
+
// TODO: This is what Expo is doing, but do we really need this?
|
|
118
|
+
// Doing so seems to make the release build broken since assets will be
|
|
119
|
+
// copied to /.../Xcode/DerivedData/.../Build/Products/Release-iphonesimulator/...app/assets/?unstable_path=.%2Fsrc%2Fimages/logo.png
|
|
120
|
+
// publicPath: '/assets/?unstable_path=.',
|
|
121
|
+
},
|
|
122
|
+
reporter: await getTerminalReporter(projectRoot),
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const metroConfig = await loadConfig(
|
|
126
|
+
{
|
|
127
|
+
cwd: projectRoot,
|
|
128
|
+
projectRoot,
|
|
129
|
+
'reset-cache': !!process.env.METRO_RESET_CACHE, // TODO: `--clean`
|
|
130
|
+
...argv,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
...defaultConfig,
|
|
134
|
+
...(typeof defaultConfigOverrides === 'function'
|
|
135
|
+
? defaultConfigOverrides(defaultConfig)
|
|
136
|
+
: defaultConfigOverrides),
|
|
137
|
+
}
|
|
138
|
+
)
|
|
139
|
+
|
|
140
|
+
return {
|
|
141
|
+
...metroConfig,
|
|
142
|
+
...extraConfig,
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type Server from 'metro/src/Server'
|
|
2
|
+
import type { ResolvedConfig } from 'vite'
|
|
3
|
+
import type { MetroPluginOptions } from '../plugins/metroPlugin'
|
|
4
|
+
import type { ViteCustomTransformOptions } from '../transformer/types'
|
|
5
|
+
import { getMetroBabelConfigFromViteConfig } from './getMetroBabelConfigFromViteConfig'
|
|
6
|
+
|
|
7
|
+
export function patchMetroServerWithViteConfigAndMetroPluginOptions(
|
|
8
|
+
metroServer: Server,
|
|
9
|
+
config: ResolvedConfig,
|
|
10
|
+
options: MetroPluginOptions
|
|
11
|
+
) {
|
|
12
|
+
// Patch transformFile to inject custom transform options.
|
|
13
|
+
const originalTransformFile = metroServer
|
|
14
|
+
.getBundler()
|
|
15
|
+
.getBundler()
|
|
16
|
+
.transformFile.bind(metroServer.getBundler().getBundler())
|
|
17
|
+
const defaultBabelConfig = getMetroBabelConfigFromViteConfig(config)
|
|
18
|
+
metroServer.getBundler().getBundler().transformFile = async (
|
|
19
|
+
filePath: string,
|
|
20
|
+
transformOptions: Parameters<typeof originalTransformFile>[1],
|
|
21
|
+
fileBuffer?: Parameters<typeof originalTransformFile>[2]
|
|
22
|
+
) => {
|
|
23
|
+
const viteCustomTransformOptions: ViteCustomTransformOptions = {
|
|
24
|
+
// config: server.config,
|
|
25
|
+
babelConfig: {
|
|
26
|
+
...defaultBabelConfig,
|
|
27
|
+
...options.babelConfig,
|
|
28
|
+
plugins: [...(defaultBabelConfig.plugins || []), ...(options.babelConfig?.plugins || [])],
|
|
29
|
+
},
|
|
30
|
+
}
|
|
31
|
+
return originalTransformFile(
|
|
32
|
+
filePath,
|
|
33
|
+
{
|
|
34
|
+
...transformOptions,
|
|
35
|
+
customTransformOptions: {
|
|
36
|
+
...transformOptions.customTransformOptions,
|
|
37
|
+
// Pass into our own babel-transformer
|
|
38
|
+
vite: viteCustomTransformOptions,
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
fileBuffer
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -11,13 +11,12 @@ import type MetroT from 'metro'
|
|
|
11
11
|
import type { loadConfig as loadConfigT } from 'metro'
|
|
12
12
|
import type MetroHmrServerT from 'metro/src/HmrServer'
|
|
13
13
|
import type createWebsocketServerT from 'metro/src/lib/createWebsocketServer'
|
|
14
|
-
import type { getDefaultConfig as getDefaultConfigT } from '@expo/metro-config'
|
|
15
14
|
import type { createDevMiddleware as createDevMiddlewareT } from '@react-native/dev-middleware'
|
|
16
15
|
|
|
17
|
-
import { projectImport
|
|
18
|
-
import { getTerminalReporter } from '../utils/getTerminalReporter'
|
|
19
|
-
import { patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName } from '../utils/patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName'
|
|
16
|
+
import { projectImport } from '../utils/projectImport'
|
|
20
17
|
import type { TransformOptions } from '../transformer/babel-core'
|
|
18
|
+
import { getMetroConfigFromViteConfig } from '../metro-config/getMetroConfigFromViteConfig'
|
|
19
|
+
import { patchMetroServerWithViteConfigAndMetroPluginOptions } from '../metro-config/patchMetroServerWithViteConfigAndMetroPluginOptions'
|
|
21
20
|
|
|
22
21
|
type MetroYargArguments = Parameters<typeof loadConfigT>[0]
|
|
23
22
|
type MetroInputConfig = Parameters<typeof loadConfigT>[1]
|
|
@@ -39,14 +38,15 @@ export type MetroPluginOptions = {
|
|
|
39
38
|
mainModuleName?: string
|
|
40
39
|
}
|
|
41
40
|
|
|
42
|
-
export function metroPlugin({
|
|
43
|
-
argv,
|
|
44
|
-
defaultConfigOverrides,
|
|
45
|
-
babelConfig,
|
|
46
|
-
mainModuleName,
|
|
47
|
-
}: MetroPluginOptions = {}): PluginOption {
|
|
41
|
+
export function metroPlugin(options: MetroPluginOptions = {}): PluginOption {
|
|
48
42
|
// let projectRoot = ''
|
|
49
43
|
|
|
44
|
+
// This is used to:
|
|
45
|
+
// 1. Make the react-native CLI bundle command use Metro.
|
|
46
|
+
// 2. Let the react-native CLI bundle command access metro plugin options.
|
|
47
|
+
// See: getBuildBundleFn
|
|
48
|
+
globalThis['__viteMetroPluginOptions__'] = options
|
|
49
|
+
|
|
50
50
|
return {
|
|
51
51
|
name: 'metro',
|
|
52
52
|
// configResolved(config) {
|
|
@@ -56,9 +56,8 @@ export function metroPlugin({
|
|
|
56
56
|
async configureServer(server) {
|
|
57
57
|
const { logger, root: projectRoot } = server.config
|
|
58
58
|
|
|
59
|
-
const { default: Metro
|
|
59
|
+
const { default: Metro } = await projectImport<{
|
|
60
60
|
default: typeof MetroT
|
|
61
|
-
loadConfig: typeof loadConfigT
|
|
62
61
|
}>(projectRoot, 'metro')
|
|
63
62
|
const { default: MetroHmrServer } = await projectImport<{
|
|
64
63
|
default: typeof MetroHmrServerT
|
|
@@ -66,118 +65,11 @@ export function metroPlugin({
|
|
|
66
65
|
const { default: createWebsocketServer } = await projectImport<{
|
|
67
66
|
default: typeof createWebsocketServerT
|
|
68
67
|
}>(projectRoot, 'metro/src/lib/createWebsocketServer')
|
|
69
|
-
const { getDefaultConfig } = await projectImport<{
|
|
70
|
-
getDefaultConfig: typeof getDefaultConfigT
|
|
71
|
-
}>(projectRoot, '@expo/metro-config')
|
|
72
68
|
const { createDevMiddleware } = await projectImport<{
|
|
73
69
|
createDevMiddleware: typeof createDevMiddlewareT
|
|
74
70
|
}>(projectRoot, '@react-native/dev-middleware')
|
|
75
71
|
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
if (mainModuleName) {
|
|
79
|
-
const origRewriteRequestUrl = _defaultConfig!.server!.rewriteRequestUrl!
|
|
80
|
-
|
|
81
|
-
// We need to patch Expo's default `config.server.rewriteRequestUrl`
|
|
82
|
-
// to change how URLs like '/.expo/.virtual-metro-entry.bundle?' are
|
|
83
|
-
// rewritten.
|
|
84
|
-
// But since that function is difficult to override, here we borrow
|
|
85
|
-
// the ExpoGoManifestHandlerMiddleware and use it to resolve the
|
|
86
|
-
// URL to the main module name.
|
|
87
|
-
const resolveMainModuleName: (p: { platform: 'ios' | 'android' }) => string =
|
|
88
|
-
await (async () => {
|
|
89
|
-
const ExpoGoManifestHandlerMiddleware = (
|
|
90
|
-
await projectImport(
|
|
91
|
-
projectRoot,
|
|
92
|
-
'@expo/cli/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js'
|
|
93
|
-
)
|
|
94
|
-
).default.ExpoGoManifestHandlerMiddleware
|
|
95
|
-
|
|
96
|
-
const manifestHandlerMiddleware = new ExpoGoManifestHandlerMiddleware(projectRoot, {})
|
|
97
|
-
|
|
98
|
-
patchExpoGoManifestHandlerMiddlewareWithCustomMainModuleName(
|
|
99
|
-
manifestHandlerMiddleware,
|
|
100
|
-
mainModuleName
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
return (p) => {
|
|
104
|
-
return manifestHandlerMiddleware.resolveMainModuleName({
|
|
105
|
-
pkg: { main: mainModuleName },
|
|
106
|
-
platform: p.platform,
|
|
107
|
-
})
|
|
108
|
-
}
|
|
109
|
-
})()
|
|
110
|
-
|
|
111
|
-
_defaultConfig!.server!.rewriteRequestUrl = (url) => {
|
|
112
|
-
if (url.includes('/.expo/.virtual-metro-entry.bundle?')) {
|
|
113
|
-
const resolvedMainModulePath = resolveMainModuleName({
|
|
114
|
-
platform: 'ios', // we probably need to handle android here, but currently in our use case this won't affect the result
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
return url.replace('.expo/.virtual-metro-entry', resolvedMainModulePath)
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return origRewriteRequestUrl(url)
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const defaultConfig: MetroInputConfig = {
|
|
125
|
-
..._defaultConfig,
|
|
126
|
-
resolver: {
|
|
127
|
-
..._defaultConfig?.resolver,
|
|
128
|
-
sourceExts: ['js', 'jsx', 'json', 'ts', 'tsx', 'mjs', 'cjs'], // `one` related packages are using `.mjs` extensions. This somehow fixes `.native` files not being resolved correctly when `.mjs` files are present.
|
|
129
|
-
resolveRequest: (context, moduleName, platform) => {
|
|
130
|
-
const origResolveRequestFn =
|
|
131
|
-
_defaultConfig?.resolver?.resolveRequest || context.resolveRequest
|
|
132
|
-
|
|
133
|
-
// HACK: Do not assert the "import" condition for `@babel/runtime`. This
|
|
134
|
-
// is a workaround for ESM <-> CJS interop, as we need the CJS versions of
|
|
135
|
-
// `@babel/runtime` helpers.
|
|
136
|
-
//
|
|
137
|
-
// This hack is originally made in Metro and was removed in `v0.81.3`, but
|
|
138
|
-
// we somehow still need it.
|
|
139
|
-
// See: https://github.com/facebook/metro/commit/9552a64a0487af64cd86d8591e203a55c59c9686#diff-b03f1b511a2be7abd755b9c2561e47f513f84931466f2cc20a17a4238d70f12bL370-L378
|
|
140
|
-
//
|
|
141
|
-
// Resolves the "TypeError: _interopRequireDefault is not a function (it is Object)" error.
|
|
142
|
-
if (moduleName.startsWith('@babel/runtime')) {
|
|
143
|
-
const contextOverride = {
|
|
144
|
-
...context,
|
|
145
|
-
unstable_conditionNames: context.unstable_conditionNames.filter(
|
|
146
|
-
(c) => c !== 'import'
|
|
147
|
-
),
|
|
148
|
-
}
|
|
149
|
-
return origResolveRequestFn(contextOverride, moduleName, platform)
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
return origResolveRequestFn(context, moduleName, platform)
|
|
153
|
-
},
|
|
154
|
-
},
|
|
155
|
-
transformer: {
|
|
156
|
-
..._defaultConfig?.transformer,
|
|
157
|
-
babelTransformerPath: projectResolve(
|
|
158
|
-
projectRoot,
|
|
159
|
-
'@vxrn/vite-plugin-metro/babel-transformer'
|
|
160
|
-
),
|
|
161
|
-
// TODO: This is what Expo is doing, but do we really need this?
|
|
162
|
-
publicPath: '/assets/?unstable_path=.',
|
|
163
|
-
},
|
|
164
|
-
reporter: await getTerminalReporter(projectRoot),
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
const config = await loadConfig(
|
|
168
|
-
{
|
|
169
|
-
cwd: projectRoot,
|
|
170
|
-
projectRoot,
|
|
171
|
-
'reset-cache': !!process.env.METRO_RESET_CACHE,
|
|
172
|
-
...argv,
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
...defaultConfig,
|
|
176
|
-
...(typeof defaultConfigOverrides === 'function'
|
|
177
|
-
? defaultConfigOverrides(defaultConfig)
|
|
178
|
-
: defaultConfigOverrides),
|
|
179
|
-
}
|
|
180
|
-
)
|
|
72
|
+
const config = await getMetroConfigFromViteConfig(server.config, options)
|
|
181
73
|
|
|
182
74
|
const { middleware, end, metroServer } = await Metro.createConnectMiddleware(config, {
|
|
183
75
|
// Force enable file watching, even on CI.
|
|
@@ -185,30 +77,7 @@ export function metroPlugin({
|
|
|
185
77
|
watch: true,
|
|
186
78
|
})
|
|
187
79
|
|
|
188
|
-
|
|
189
|
-
const originalTransformFile = metroServer
|
|
190
|
-
.getBundler()
|
|
191
|
-
.getBundler()
|
|
192
|
-
.transformFile.bind(metroServer.getBundler().getBundler())
|
|
193
|
-
metroServer.getBundler().getBundler().transformFile = async (
|
|
194
|
-
filePath: string,
|
|
195
|
-
transformOptions: Parameters<typeof originalTransformFile>[1],
|
|
196
|
-
fileBuffer?: Parameters<typeof originalTransformFile>[2]
|
|
197
|
-
) => {
|
|
198
|
-
return originalTransformFile(
|
|
199
|
-
filePath,
|
|
200
|
-
{
|
|
201
|
-
...transformOptions,
|
|
202
|
-
customTransformOptions: {
|
|
203
|
-
...transformOptions.customTransformOptions,
|
|
204
|
-
vite: {
|
|
205
|
-
babelConfig,
|
|
206
|
-
},
|
|
207
|
-
},
|
|
208
|
-
},
|
|
209
|
-
fileBuffer
|
|
210
|
-
)
|
|
211
|
-
}
|
|
80
|
+
patchMetroServerWithViteConfigAndMetroPluginOptions(metroServer, server.config, options)
|
|
212
81
|
|
|
213
82
|
const hmrServer = new MetroHmrServer(
|
|
214
83
|
metroServer.getBundler(),
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
We are copying code from `@react-native/community-cli-plugin` mostly because we need to pass custom things into the babel-transformer.
|
|
2
|
+
If we can find a better way to do that, we probably can just import `unstable_buildBundleWithConfig` from `@react-native/community-cli-plugin` and just use it.
|