@@ -2,6 +2,7 @@ var findRoot = require('find-root')
2
2
, path = require ( 'path' )
3
3
, resolve = require ( 'resolve' )
4
4
, get = require ( 'lodash.get' )
5
+ , find = require ( 'array-find' )
5
6
6
7
var resolveAlias = require ( './resolve-alias' )
7
8
@@ -60,6 +61,7 @@ exports.resolveImport = function resolveImport(source, file, settings) {
60
61
|| [ 'web_modules' , 'node_modules' ] ,
61
62
62
63
paths : paths ,
64
+ packageFilter : packageFilter . bind ( null , webpackConfig ) ,
63
65
} )
64
66
}
65
67
@@ -85,3 +87,32 @@ function findExternal(source, externals) {
85
87
// else, vanilla object
86
88
return Object . keys ( externals ) . some ( function ( e ) { return source === e } )
87
89
}
90
+
91
+ /**
92
+ * webpack defaults: http://webpack.github.io/docs/configuration.html#resolve-packagemains
93
+ * @type {Array }
94
+ */
95
+ var defaultMains = [
96
+ 'webpack' , 'browser' , 'web' , 'browserify' , [ 'jam' , 'main' ] , 'main' ,
97
+ ]
98
+
99
+ function packageFilter ( config , pkg ) {
100
+ var altMain
101
+
102
+ // check for rollup-style first
103
+ if ( pkg [ 'jsnext:main' ] ) {
104
+ pkg [ 'main' ] = pkg [ 'jsnext:main' ]
105
+ } else {
106
+ // check for configured/default alternative main fields
107
+ altMain = find (
108
+ get ( config , [ 'resolve' , 'packageMains' ] ) || defaultMains ,
109
+ function ( m ) { return typeof get ( pkg , m ) === 'string' } )
110
+
111
+ if ( altMain ) {
112
+ pkg [ 'main' ] = get ( pkg , altMain )
113
+ }
114
+ }
115
+
116
+
117
+ return pkg
118
+ }
0 commit comments