@@ -34,6 +34,14 @@ NodeSourcePlugin.prototype.apply = function(compiler) {
3434 return "require(" + JSON . stringify ( moduleJsPath ) + ")" ;
3535 }
3636
37+ function addExpression ( parser , name , module , type , suffix ) {
38+ suffix = suffix || "" ;
39+ parser . plugin ( "expression " + name , function ( ) {
40+ if ( this . state . module && this . state . module . resource === getPathToModule ( module , type ) ) return ;
41+ return ModuleParserHelpers . addParsedVariable ( this , name , buildExpression ( this . state . module . context , getPathToModule ( module , type ) ) + suffix ) ;
42+ } ) ;
43+ }
44+
3745 compiler . plugin ( "compilation" , function ( compilation , params ) {
3846 params . normalModuleFactory . plugin ( "parser" , function ( parser , parserOptions ) {
3947
@@ -44,37 +52,27 @@ NodeSourcePlugin.prototype.apply = function(compiler) {
4452 if ( parserOptions . node )
4553 localOptions = objectAssign ( { } , localOptions , parserOptions . node ) ;
4654
47- if ( localOptions . process ) {
48- var processType = localOptions . process ;
49- parser . plugin ( "expression process" , function ( ) {
50- return ModuleParserHelpers . addParsedVariable ( this , "process" , buildExpression ( this . state . module . context , getPathToModule ( "process" , processType ) ) ) ;
51- } ) ;
52- }
5355 if ( localOptions . global ) {
5456 parser . plugin ( "expression global" , function ( ) {
5557 return ModuleParserHelpers . addParsedVariable ( this , "global" , buildExpression ( this . state . module . context , require . resolve ( "../../buildin/global.js" ) ) ) ;
5658 } ) ;
5759 }
60+ if ( localOptions . process ) {
61+ var processType = localOptions . process ;
62+ addExpression ( parser , "process" , "process" , processType ) ;
63+ }
5864 if ( localOptions . console ) {
5965 var consoleType = localOptions . console ;
60- parser . plugin ( "expression console" , function ( ) {
61- return ModuleParserHelpers . addParsedVariable ( this , "console" , buildExpression ( this . state . module . context , getPathToModule ( "console" , consoleType ) ) ) ;
62- } ) ;
66+ addExpression ( parser , "console" , "console" , consoleType ) ;
6367 }
6468 var bufferType = localOptions . Buffer ;
6569 if ( bufferType ) {
66- parser . plugin ( "expression Buffer" , function ( ) {
67- return ModuleParserHelpers . addParsedVariable ( this , "Buffer" , buildExpression ( this . state . module . context , getPathToModule ( "buffer" , bufferType ) ) + ".Buffer" ) ;
68- } ) ;
70+ addExpression ( parser , "Buffer" , "buffer" , bufferType , ".Buffer" ) ;
6971 }
7072 if ( localOptions . setImmediate ) {
7173 var setImmediateType = localOptions . setImmediate ;
72- parser . plugin ( "expression setImmediate" , function ( ) {
73- return ModuleParserHelpers . addParsedVariable ( this , "setImmediate" , buildExpression ( this . state . module . context , getPathToModule ( "timers" , setImmediateType ) ) + ".setImmediate" ) ;
74- } ) ;
75- parser . plugin ( "expression clearImmediate" , function ( ) {
76- return ModuleParserHelpers . addParsedVariable ( this , "clearImmediate" , buildExpression ( this . state . module . context , getPathToModule ( "timers" , setImmediateType ) ) + ".clearImmediate" ) ;
77- } ) ;
74+ addExpression ( parser , "setImmediate" , "timers" , setImmediateType , ".setImmediate" ) ;
75+ addExpression ( parser , "clearImmediate" , "timers" , setImmediateType , ".clearImmediate" ) ;
7876 }
7977 } ) ;
8078 } ) ;
0 commit comments