mirror of https://github.com/webpack/webpack.git
				
				
				
			Don't record absolute paths for regexps used in dynamic requires
This avoids records like: "src/dependencies sync ../../../../^/.//.*$": "./src/dependencies sync recursive ^\\.\\/.*$" with the number of "../"s varying according to the depth of the folder you're building from. Fixes #7339
This commit is contained in:
		
							parent
							
								
									8a6db447a8
								
							
						
					
					
						commit
						6bf9479af2
					
				|  | @ -12,6 +12,11 @@ const path = require("path"); | |||
|  * @returns {boolean} returns true if path is "Absolute Path"-like | ||||
|  */ | ||||
| const looksLikeAbsolutePath = maybeAbsolutePath => { | ||||
| 	if (/^\/.*\/$/.test(maybeAbsolutePath)) { | ||||
| 		// this 'path' is actually a regexp generated by dynamic requires.
 | ||||
| 		// Don't treat it as an absolute path.
 | ||||
| 		return false; | ||||
| 	} | ||||
| 	return /^(?:[a-z]:\\|\/)/i.test(maybeAbsolutePath); | ||||
| }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -27,3 +27,35 @@ exports[`ConfigTestCases records issue-2991 exported tests should write relative | |||
|   } | ||||
| }" | ||||
| `; | ||||
| 
 | ||||
| exports[`ConfigTestCases records issue-7339 exported tests should write relative dynamic-require paths to records 1`] = ` | ||||
| "{ | ||||
|   \\"modules\\": { | ||||
|     \\"byIdentifier\\": { | ||||
|       \\"dependencies/foo.js\\": 0, | ||||
|       \\"dependencies/bar.js\\": 1, | ||||
|       \\"external \\\\\\"path\\\\\\"\\": 2, | ||||
|       \\"external \\\\\\"fs\\\\\\"\\": 3, | ||||
|       \\"dependencies sync /^\\\\\\\\.\\\\\\\\/.*$/\\": 4, | ||||
|       \\"test.js\\": 5 | ||||
|     }, | ||||
|     \\"usedIds\\": { | ||||
|       \\"0\\": 0, | ||||
|       \\"1\\": 1, | ||||
|       \\"2\\": 2, | ||||
|       \\"3\\": 3, | ||||
|       \\"4\\": 4, | ||||
|       \\"5\\": 5 | ||||
|     } | ||||
|   }, | ||||
|   \\"chunks\\": { | ||||
|     \\"byName\\": { | ||||
|       \\"main\\": 0 | ||||
|     }, | ||||
|     \\"bySource\\": {}, | ||||
|     \\"usedIds\\": [ | ||||
|       0 | ||||
|     ] | ||||
|   } | ||||
| }" | ||||
| `; | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| module.exports = "Bar" | ||||
|  | @ -0,0 +1 @@ | |||
| module.exports = "Foo" | ||||
|  | @ -0,0 +1,10 @@ | |||
| function loadDependency(dep) { | ||||
| 	require("./dependencies/" + dep); | ||||
| } | ||||
| 
 | ||||
| it("should write relative dynamic-require paths to records", function() { | ||||
| 	var fs = require("fs"); | ||||
| 	var path = require("path"); | ||||
| 	var content = fs.readFileSync(path.join(__dirname, "records.json"), "utf-8"); | ||||
| 	expect(content).toMatchSnapshot(); | ||||
| }); | ||||
|  | @ -0,0 +1,13 @@ | |||
| var path = require("path"); | ||||
| 
 | ||||
| module.exports = { | ||||
| 	entry: "./test", | ||||
| 	recordsOutputPath: path.resolve( | ||||
| 		__dirname, | ||||
| 		"../../../js/config/records/issue-7339/records.json" | ||||
| 	), | ||||
| 	target: "node", | ||||
| 	node: { | ||||
| 		__dirname: false | ||||
| 	} | ||||
| }; | ||||
		Loading…
	
		Reference in New Issue