Merge pull request #17637 from Snuffleupagus/babel-plugin-__non_webpack_import__
Move the `__non_webpack_import__` re-writing into the Babel plugin
This commit is contained in:
		
						commit
						dbda3ec5f9
					
				| @ -172,6 +172,22 @@ function babelPluginPDFJSPreprocessor(babel, ctx) { | |||||||
|           ); |           ); | ||||||
|           path.replaceWith(t.inherits(t.valueToNode(result), path.node)); |           path.replaceWith(t.inherits(t.valueToNode(result), path.node)); | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         if (t.isIdentifier(node.callee, { name: "__non_webpack_import__" })) { | ||||||
|  |           if (node.arguments.length !== 1) { | ||||||
|  |             throw new Error("Invalid `__non_webpack_import__` usage."); | ||||||
|  |           } | ||||||
|  |           // Replace it with a standard `import`-call and
 | ||||||
|  |           // ensure that Webpack will leave it alone.
 | ||||||
|  |           const source = node.arguments[0]; | ||||||
|  |           source.leadingComments = [ | ||||||
|  |             { | ||||||
|  |               type: "CommentBlock", | ||||||
|  |               value: "webpackIgnore: true", | ||||||
|  |             }, | ||||||
|  |           ]; | ||||||
|  |           path.replaceWith(t.importExpression(source)); | ||||||
|  |         } | ||||||
|       }, |       }, | ||||||
|       BlockStatement: { |       BlockStatement: { | ||||||
|         // Visit node in post-order so that recursive flattening
 |         // Visit node in post-order so that recursive flattening
 | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
| import { Test } from "import-name"; | import { Test } from "import-name"; | ||||||
| import { Test2 } from './non-alias'; | import { Test2 } from './non-alias'; | ||||||
| export { Test3 } from "import-name"; | export { Test3 } from "import-name"; | ||||||
|  | await import( /*webpackIgnore: true*/"./non-alias"); | ||||||
|  | |||||||
| @ -1,3 +1,4 @@ | |||||||
| import { Test } from 'import-alias'; | import { Test } from 'import-alias'; | ||||||
| import { Test2 } from './non-alias'; | import { Test2 } from './non-alias'; | ||||||
| export { Test3 } from 'import-alias'; | export { Test3 } from 'import-alias'; | ||||||
|  | await __non_webpack_import__("./non-alias"); | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								gulpfile.mjs
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								gulpfile.mjs
									
									
									
									
									
								
							| @ -419,7 +419,7 @@ function checkChromePreferencesFile(chromePrefsPath, webPrefs) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function tweakWebpackOutput(jsName) { | function tweakWebpackOutput(jsName) { | ||||||
|   const replacer = ["__non_webpack_import__\\("]; |   const replacer = []; | ||||||
| 
 | 
 | ||||||
|   if (jsName) { |   if (jsName) { | ||||||
|     replacer.push( |     replacer.push( | ||||||
| @ -431,8 +431,6 @@ function tweakWebpackOutput(jsName) { | |||||||
| 
 | 
 | ||||||
|   return replace(regex, match => { |   return replace(regex, match => { | ||||||
|     switch (match) { |     switch (match) { | ||||||
|       case "__non_webpack_import__(": |  | ||||||
|         return "import(/* webpackIgnore: true */ "; |  | ||||||
|       case " __webpack_exports__ = {};": |       case " __webpack_exports__ = {};": | ||||||
|         return ` __webpack_exports__ = globalThis.${jsName} = {};`; |         return ` __webpack_exports__ = globalThis.${jsName} = {};`; | ||||||
|       case " __webpack_exports__ = await __webpack_exports__;": |       case " __webpack_exports__ = await __webpack_exports__;": | ||||||
| @ -1572,17 +1570,6 @@ gulp.task("types", function (done) { | |||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| function buildLibHelper(bundleDefines, inputStream, outputDir) { | function buildLibHelper(bundleDefines, inputStream, outputDir) { | ||||||
|   function babelPluginReplaceNonWebpackImport(b) { |  | ||||||
|     return { |  | ||||||
|       visitor: { |  | ||||||
|         Identifier(curPath, state) { |  | ||||||
|           if (curPath.node.name === "__non_webpack_import__") { |  | ||||||
|             curPath.replaceWith(b.types.identifier("import")); |  | ||||||
|           } |  | ||||||
|         }, |  | ||||||
|       }, |  | ||||||
|     }; |  | ||||||
|   } |  | ||||||
|   function preprocessLib(content) { |   function preprocessLib(content) { | ||||||
|     const skipBabel = bundleDefines.SKIP_BABEL; |     const skipBabel = bundleDefines.SKIP_BABEL; | ||||||
|     content = babel.transform(content, { |     content = babel.transform(content, { | ||||||
| @ -1590,10 +1577,7 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) { | |||||||
|       presets: skipBabel |       presets: skipBabel | ||||||
|         ? undefined |         ? undefined | ||||||
|         : [["@babel/preset-env", { loose: false, modules: false }]], |         : [["@babel/preset-env", { loose: false, modules: false }]], | ||||||
|       plugins: [ |       plugins: [[babelPluginPDFJSPreprocessor, ctx]], | ||||||
|         babelPluginReplaceNonWebpackImport, |  | ||||||
|         [babelPluginPDFJSPreprocessor, ctx], |  | ||||||
|       ], |  | ||||||
|       targets: BABEL_TARGETS, |       targets: BABEL_TARGETS, | ||||||
|     }).code; |     }).code; | ||||||
|     content = content.replaceAll( |     content = content.replaceAll( | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user