1- // Polyfill for node.js
2- // - adds require.ensure
3- // - adds require.context
4- // call it like this:
5- // require = require("webpack/require-polyfill")(require.valueOf());
6- // This is only required when you want to use the special require.xxx methods
7- // in server-side code which should be so only in rar cases.
8- module . exports = function ( req ) {
9- if ( ! req . webpackPolyfill ) {
10- var oldReq = req ;
11- req = function ( name ) {
12- if ( name . indexOf ( "!" ) !== - 1 ) {
13- var items = name . replace ( / ^ ! | ! $ / g, "" ) . replace ( / ! ! / g, "!" ) . split ( / ! / g) ;
14- var resource = oldReq . resolve ( items . pop ( ) ) ;
15- var resolved = [ ] ;
16- items . forEach ( function ( item , index ) {
17- var relative = false ;
18- if ( item . length > 2 &&
19- item [ 0 ] === "." ) {
20- if ( item [ 1 ] === "/" )
21- relative = true ;
22- else if ( item . length > 3 &&
23- item [ 1 ] === "." &&
24- item [ 2 ] === "/" )
25- relative = true ;
26- }
27- if ( item . length > 3 &&
28- item [ 1 ] === ":" &&
29- item [ 2 ] === "\\" )
30- relative = true ;
31- var tries = [ ] ;
32- if ( ! relative ) {
33- module . exports . options . resolve . loaderPostfixes . forEach ( function ( postfix ) {
34- if ( item . indexOf ( "/" ) !== - 1 )
35- tries . push ( item . replace ( "/" , postfix + "/" ) ) ;
36- else
37- tries . push ( item + postfix ) ;
38- } ) ;
39- }
40- tries . push ( item ) ;
41- var extensions = module . exports . options . resolve . loaderExtensions ;
42- for ( var i = 0 ; i < tries . length ; i ++ ) {
43- for ( var ext = 0 ; ext < extensions . length ; ext ++ ) {
44- try {
45- var file = oldReq . resolve ( tries [ i ] + extensions [ ext ] ) ;
46- } catch ( e ) { }
47- if ( file ) {
48- resolved . push ( file ) ;
49- break ;
50- }
51- }
52- if ( ext !== extensions . length )
53- break ;
54- }
55- if ( i === tries . length )
56- throw new Error ( "Cannot find loader module '" + item + "'" ) ;
57- } ) ;
58- resolved = resolved . reverse ( ) ;
59- var cacheLine = resolved . join ( "!" ) + "!" + resource ;
60- var cacheEntry = oldReq . cache [ cacheLine ] ;
61- if ( cacheEntry )
62- return cacheEntry ;
63- var content = [ require ( "fs" ) . readFileSync ( resource , "utf-8" ) ] ;
64- var values ;
65- function exec ( code , filename ) {
66- var Module = require ( "module" ) ;
67- var m = new Module ( "exec in " + cacheLine , module ) ;
68- m . filename = resource ;
69- m . paths = Module . _nodeModulePaths ( require ( "path" ) . dirname ( resource ) ) ;
70- m . _compile ( "require = require(" + JSON . stringify ( __filename ) + ")(require.valueOf());" + code , filename ) ;
71- return m . exports ;
72- }
73- resolved . forEach ( function ( loader ) {
74- var set = false , err = null ;
75- var context = {
76- request : cacheLine ,
77- filenames : [ resource ] ,
78- exec : exec ,
79- resolve : function ( context , path , cb ) {
80- try {
81- var Module = require ( "module" ) ;
82- var virtModule = new Module ( "." , null ) ;
83- virtModule . filename = require ( "path" ) . join ( context , "resolve.js" ) ;
84- virtModule . paths = Module . _nodeModulePaths ( context ) ;
85- cb ( null , Module . _resolveFilename ( path , virtModule ) ) ;
86- } catch ( e ) { cb ( e ) ; }
87- } ,
88- async : function ( ) { return false ; } ,
89- callback : function ( ) {
90- set = true ;
91- content = Array . prototype . slice . apply ( arguments ) ;
92- err = content . shift ( ) ;
93- values = context . values ;
94- } ,
95- options : module . exports . options ,
96- minimize : module . exports . options . minimize ,
97- debug : module . exports . options . debug ,
98- web : false ,
99- inputValues : values ,
100- values : undefined
101- } ;
102- var retVal = oldReq ( loader ) . apply ( context , content ) ;
103- if ( set ) {
104- if ( err ) throw err ;
105- } else {
106- content = [ retVal ] ;
107- values = context . values ;
108- }
109- } ) ;
110- var ret ;
111- if ( values !== undefined )
112- ret = values [ 0 ] ;
113- else
114- ret = exec ( content [ 0 ] , cacheLine ) ;
115- oldReq . cache [ cacheLine ] = ret ;
116- return ret ;
117- } else {
118- var resolved = oldReq . resolve ( name ) ;
119- var match = false ;
120- var loaders = module . exports . options . resolve . loaders ;
121- for ( var i = 0 ; i < loaders . length ; i ++ )
122- if ( loaders [ i ] . test . test ( resolved ) )
123- return req ( loaders [ i ] . loader + "!" + name ) ;
124-
125- return oldReq ( name ) ;
126- }
127- } ;
128- req . __proto__ = oldReq ;
129- req . webpackPolyfill = true ;
130- }
131- if ( ! req . ensure ) {
132- req . ensure = function ( array , callback ) {
133- callback ( req ) ;
134- } ;
135- }
136- if ( ! req . context ) {
137- req . context = function ( contextName ) {
138- return function ( name ) {
139- return req ( contextName + "/" + name ) ;
140- }
141- }
142- }
143- return req ;
144- }
145- var options = module . exports . options = {
146- resolve : {
147- loaders : [
148- { test : / \. c o f f e e $ / , loader : "coffee" } ,
149- // {test: /\.json$/, loader: "json"}, // This works out of the box in node.js
150- { test : / \. j a d e $ / , loader : "jade" } ,
151- { test : / \. c s s $ / , loader : "style!css" } ,
152- { test : / \. l e s s $ / , loader : "style!css!val!less" }
153- ] ,
154- loaderExtensions : [ ".webpack-loader.js" , ".loader.js" , ".js" , "" ] ,
155- loaderPostfixes : [ "-webpack-loader" , "-loader" , "" ]
156- }
157- } ;
1+ module . exports = require ( "enhanced-require" )
0 commit comments