1+ var fs = require ( 'fs' ) ;
12var path = require ( 'path' ) ;
23var mdeps = require ( '@cljs-oss/module-deps' ) ;
34var nodeResolve = require ( 'resolve' ) ;
4- var browserResolve = require ( 'browser-resolve' ) ;
55var konan = require ( 'konan' ) ;
6+ var enhancedResolve = require ( 'enhanced-resolve' ) ;
67
78var target = 'CLJS_TARGET' ;
8- var filename = path . resolve ( __dirname , 'JS_FILE' ) ;
9- var resolver = target === 'nodejs' ? nodeResolve : browserResolve ;
9+ var filename = fs . realpathSync ( path . resolve ( __dirname , 'JS_FILE' ) ) ;
10+ var mainFields =
11+ target === 'nodejs' ? [ 'module' , 'main' ] : [ 'module' , 'browser' , 'main' ] ;
12+
13+ var resolver = enhancedResolve . create ( {
14+ fileSystem : new enhancedResolve . CachedInputFileSystem (
15+ new enhancedResolve . NodeJsInputFileSystem ( ) ,
16+ 4000
17+ ) ,
18+ extensions : [ '.js' , '.json' ] ,
19+ mainFields : mainFields ,
20+ moduleExtensions : [ '.js' , '.json' ] ,
21+ } ) ;
1022
1123var md = mdeps ( {
1224 resolve : function ( id , parentOpts , cb ) {
1325 // set the basedir properly so we don't try to resolve requires in the Closure
1426 // Compiler processed `node_modules` folder.
1527 parentOpts . basedir =
16- parentOpts . filename === filename ? __dirname : path . dirname ( parentOpts . filename ) ;
17- parentOpts . extensions = [ '.js' , '.json' ] ;
28+ parentOpts . filename === filename
29+ ? path . resolve ( __dirname )
30+ : path . dirname ( parentOpts . filename ) ;
1831
19- resolver ( id , parentOpts , cb ) ;
32+ resolver ( parentOpts . basedir , id , cb ) ;
2033 } ,
2134 filter : function ( id ) {
2235 return ! ( target === 'nodejs' && nodeResolve . isCore ( id ) ) ;
@@ -28,6 +41,17 @@ var md = mdeps({
2841 } ,
2942} ) ;
3043
44+ function getPackageJsonMainEntry ( pkgJson ) {
45+ for ( var i = 0 ; i < mainFields . length ; i ++ ) {
46+ var entry = mainFields [ i ] ;
47+
48+ if ( pkgJson [ entry ] != null ) {
49+ return pkgJson [ entry ] ;
50+ }
51+ }
52+ return null ;
53+ }
54+
3155var pkgJsons = [ ] ;
3256var deps_files = { } ;
3357
@@ -42,8 +66,9 @@ md.on('package', function(pkg) {
4266 pkgJson . provides = [ pkg . name ] ;
4367 }
4468
45- if ( pkg . main != null ) {
46- pkgJson . main = path . join ( pkg . __dirname , pkg . main ) ;
69+ var pkgJsonMainEntry = getPackageJsonMainEntry ( pkg ) ;
70+ if ( pkgJsonMainEntry != null ) {
71+ pkgJson . mainEntry = path . join ( pkg . __dirname , pkgJsonMainEntry ) ;
4772 }
4873
4974 pkgJsons . push ( pkgJson ) ;
@@ -58,8 +83,8 @@ md.on('end', function() {
5883 for ( var i = 0 ; i < pkgJsons . length ; i ++ ) {
5984 var pkgJson = pkgJsons [ i ] ;
6085
61- if ( deps_files [ pkgJson . main ] != null && pkgJson . provides != null ) {
62- deps_files [ pkgJson . main ] . provides = pkgJson . provides ;
86+ if ( deps_files [ pkgJson . mainEntry ] != null && pkgJson . provides != null ) {
87+ deps_files [ pkgJson . mainEntry ] . provides = pkgJson . provides ;
6388 }
6489
6590 deps_files [ pkgJson . file ] = { file : pkgJson . file } ;
0 commit comments