diff --git a/packages/metro-config/src/__tests__/__snapshots__/loadConfig-test.js.snap b/packages/metro-config/src/__tests__/__snapshots__/loadConfig-test.js.snap index b765ecc1a0..21877b113d 100644 --- a/packages/metro-config/src/__tests__/__snapshots__/loadConfig-test.js.snap +++ b/packages/metro-config/src/__tests__/__snapshots__/loadConfig-test.js.snap @@ -83,6 +83,7 @@ Object { ], }, "unstable_enablePackageExports": false, + "unstable_enableSymlinks": false, "useWatchman": true, }, "serializer": Object { @@ -259,6 +260,7 @@ Object { ], }, "unstable_enablePackageExports": false, + "unstable_enableSymlinks": false, "useWatchman": true, }, "serializer": Object { @@ -435,6 +437,7 @@ Object { ], }, "unstable_enablePackageExports": false, + "unstable_enableSymlinks": false, "useWatchman": true, }, "serializer": Object { @@ -611,6 +614,7 @@ Object { ], }, "unstable_enablePackageExports": false, + "unstable_enableSymlinks": false, "useWatchman": true, }, "serializer": Object { diff --git a/packages/metro-config/src/configTypes.flow.js b/packages/metro-config/src/configTypes.flow.js index c4b15e1925..a6cfbda6f1 100644 --- a/packages/metro-config/src/configTypes.flow.js +++ b/packages/metro-config/src/configTypes.flow.js @@ -102,6 +102,7 @@ type ResolverConfigT = { disableHierarchicalLookup: boolean, dependencyExtractor: ?string, emptyModulePath: string, + unstable_enableSymlinks: boolean, extraNodeModules: {[name: string]: string, ...}, hasteImplModulePath: ?string, nodeModulesPaths: $ReadOnlyArray, diff --git a/packages/metro-config/src/defaults/index.js b/packages/metro-config/src/defaults/index.js index 26d75330a0..96085cc308 100644 --- a/packages/metro-config/src/defaults/index.js +++ b/packages/metro-config/src/defaults/index.js @@ -39,6 +39,7 @@ const getDefaultValues = (projectRoot: ?string): ConfigT => ({ blockList: exclusionList(), dependencyExtractor: undefined, disableHierarchicalLookup: false, + unstable_enableSymlinks: false, emptyModulePath: require.resolve( 'metro-runtime/src/modules/empty-module.js', ), diff --git a/packages/metro-file-map/src/__tests__/index-test.js b/packages/metro-file-map/src/__tests__/index-test.js index 68532057b4..8a461881cb 100644 --- a/packages/metro-file-map/src/__tests__/index-test.js +++ b/packages/metro-file-map/src/__tests__/index-test.js @@ -510,48 +510,12 @@ describe('HasteMap', () => { expect(deepNormalize(await hasteMap.read())).toEqual(cacheContent); }); - it('throws if both symlinks and watchman is enabled', () => { - expect( - () => new HasteMap({...defaultConfig, enableSymlinks: true}), - ).toThrow( - 'Set either `enableSymlinks` to false or `useWatchman` to false.', - ); - expect( - () => - new HasteMap({ - ...defaultConfig, - enableSymlinks: true, - useWatchman: true, - }), - ).toThrow( - 'Set either `enableSymlinks` to false or `useWatchman` to false.', - ); - - expect( - () => - new HasteMap({ - ...defaultConfig, - enableSymlinks: false, - useWatchman: true, - }), - ).not.toThrow(); - - expect( - () => - new HasteMap({ - ...defaultConfig, - enableSymlinks: true, - useWatchman: false, - }), - ).not.toThrow(); - }); - describe('builds a haste map on a fresh cache with SHA-1s', () => { it.each([ - // `enableSymlinks` is currently not permitted with `useWatchman` [false, false], [false, true], [true, false], + [true, true], ])( 'uses watchman: %s, symlinks enabled: %s', async (useWatchman, enableSymlinks) => { diff --git a/packages/metro-file-map/src/index.js b/packages/metro-file-map/src/index.js index 2f8ae55515..82af415190 100644 --- a/packages/metro-file-map/src/index.js +++ b/packages/metro-file-map/src/index.js @@ -324,14 +324,6 @@ export default class HasteMap extends EventEmitter { buildParameters, }); - if (this._options.enableSymlinks && this._options.useWatchman) { - throw new Error( - 'metro-file-map: enableSymlinks config option was set, but ' + - 'is incompatible with watchman.\n' + - 'Set either `enableSymlinks` to false or `useWatchman` to false.', - ); - } - this._buildPromise = null; this._worker = null; this._startupPerfLogger?.point('constructor_end'); diff --git a/packages/metro/src/node-haste/DependencyGraph/createHasteMap.js b/packages/metro/src/node-haste/DependencyGraph/createHasteMap.js index 42d6d46f27..45cf96fb4f 100644 --- a/packages/metro/src/node-haste/DependencyGraph/createHasteMap.js +++ b/packages/metro/src/node-haste/DependencyGraph/createHasteMap.js @@ -70,6 +70,7 @@ function createHasteMap( computeDependencies, computeSha1: true, dependencyExtractor: config.resolver.dependencyExtractor, + enableSymlinks: config.resolver.unstable_enableSymlinks, extensions: Array.from( new Set([ ...config.resolver.sourceExts,