File tree Expand file tree Collapse file tree 7 files changed +79
-0
lines changed
test/cases/loaders/import-module Expand file tree Collapse file tree 7 files changed +79
-0
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ const RuntimeRequirementsDependency = require("./dependencies/RuntimeRequirement
11
11
const JavascriptModulesPlugin = require ( "./javascript/JavascriptModulesPlugin" ) ;
12
12
const AsyncModuleRuntimeModule = require ( "./runtime/AsyncModuleRuntimeModule" ) ;
13
13
const AutoPublicPathRuntimeModule = require ( "./runtime/AutoPublicPathRuntimeModule" ) ;
14
+ const BaseUriRuntimeModule = require ( "./runtime/BaseUriRuntimeModule" ) ;
14
15
const CompatGetDefaultExportRuntimeModule = require ( "./runtime/CompatGetDefaultExportRuntimeModule" ) ;
15
16
const CompatRuntimeModule = require ( "./runtime/CompatRuntimeModule" ) ;
16
17
const CreateFakeNamespaceObjectRuntimeModule = require ( "./runtime/CreateFakeNamespaceObjectRuntimeModule" ) ;
@@ -413,6 +414,15 @@ class RuntimePlugin {
413
414
) ;
414
415
return true ;
415
416
} ) ;
417
+ compilation . hooks . runtimeRequirementInTree
418
+ . for ( RuntimeGlobals . baseURI )
419
+ . tap ( "RuntimePlugin" , chunk => {
420
+ const { chunkLoading } = chunk . getEntryOptions ( ) ;
421
+ if ( chunkLoading === false ) {
422
+ compilation . addRuntimeModule ( chunk , new BaseUriRuntimeModule ( ) ) ;
423
+ return true ;
424
+ }
425
+ } ) ;
416
426
// TODO webpack 6: remove CompatRuntimeModule
417
427
compilation . hooks . additionalTreeRuntimeRequirements . tap (
418
428
"RuntimePlugin" ,
Original file line number Diff line number Diff line change
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Ivan Kopeykin @vankop
4
+ */
5
+
6
+ "use strict" ;
7
+
8
+ const RuntimeGlobals = require ( "../RuntimeGlobals" ) ;
9
+ const RuntimeModule = require ( "../RuntimeModule" ) ;
10
+
11
+ class BaseUriRuntimeModule extends RuntimeModule {
12
+ constructor ( ) {
13
+ super ( "base uri" , RuntimeModule . STAGE_ATTACH ) ;
14
+ }
15
+
16
+ /**
17
+ * @returns {string } runtime code
18
+ */
19
+ generate ( ) {
20
+ const { chunk } = this ;
21
+
22
+ const options = chunk . getEntryOptions ( ) ;
23
+ return `${ RuntimeGlobals . baseURI } = ${
24
+ options . baseUri === undefined
25
+ ? "undefined"
26
+ : JSON . stringify ( options . baseUri )
27
+ } ;`;
28
+ }
29
+ }
30
+
31
+ module . exports = BaseUriRuntimeModule ;
Original file line number Diff line number Diff line change
1
+ {"a" :1 }
Original file line number Diff line number Diff line change
1
+ import content from "./loader!!" ;
2
+
3
+ it ( "should compile" , ( ) => {
4
+ expect ( typeof content ) . toBe ( "string" ) ;
5
+ expect ( content . startsWith ( "webpack://" ) ) . toBe ( true ) ;
6
+ } ) ;
Original file line number Diff line number Diff line change
1
+ "use strict" ;
2
+
3
+ const path = require ( "path" ) ;
4
+
5
+ /** @type {import("../../../../").LoaderDefinition } */
6
+ module . exports = function ( ) {
7
+ const callback = this . async ( ) ;
8
+ this . importModule (
9
+ path . resolve ( __dirname , "module.js" ) ,
10
+ { baseUri : "webpack://" } ,
11
+ ( error , exports ) => {
12
+ if ( error ) {
13
+ callback ( error ) ;
14
+ return ;
15
+ }
16
+
17
+ callback (
18
+ null ,
19
+ `module.exports = ${
20
+ exports . asset ? JSON . stringify ( exports . asset ) : undefined
21
+ } `
22
+ ) ;
23
+ }
24
+ ) ;
25
+ } ;
Original file line number Diff line number Diff line change
1
+ const asset = new URL ( "./a.json" , import . meta. url ) ;
2
+
3
+ export { asset }
Original file line number Diff line number Diff line change
1
+ module . exports = config => {
2
+ return ! config . module ;
3
+ } ;
You can’t perform that action at this time.
0 commit comments