mirror of https://github.com/status-im/metro.git
[react-packager] Default to index.js from main if it's a dir
This commit is contained in:
parent
a2c32d4d29
commit
81634084bc
|
@ -166,6 +166,69 @@ describe('DependencyGraph', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
pit('should default main package to index.js', function() {
|
||||||
|
var root = '/root';
|
||||||
|
fs.__setMockFilesystem({
|
||||||
|
'root': {
|
||||||
|
'index.js': 'require("aPackage")',
|
||||||
|
'aPackage': {
|
||||||
|
'package.json': JSON.stringify({
|
||||||
|
name: 'aPackage',
|
||||||
|
}),
|
||||||
|
'index.js': 'lol',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var dgraph = new DependencyGraph({
|
||||||
|
roots: [root],
|
||||||
|
fileWatcher: fileWatcher
|
||||||
|
});
|
||||||
|
return dgraph.load().then(function() {
|
||||||
|
expect(dgraph.getOrderedDependencies('/root/index.js'))
|
||||||
|
.toEqual([
|
||||||
|
{id: '/root/index.js', path: '/root/index.js', dependencies: ['aPackage']},
|
||||||
|
{ id: 'aPackage/index',
|
||||||
|
path: '/root/aPackage/index.js',
|
||||||
|
dependencies: []
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
pit('should default use index.js if main is a dir', function() {
|
||||||
|
var root = '/root';
|
||||||
|
fs.__setMockFilesystem({
|
||||||
|
'root': {
|
||||||
|
'index.js': 'require("aPackage")',
|
||||||
|
'aPackage': {
|
||||||
|
'package.json': JSON.stringify({
|
||||||
|
name: 'aPackage',
|
||||||
|
main: 'lib',
|
||||||
|
}),
|
||||||
|
lib: {
|
||||||
|
'index.js': 'lol',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var dgraph = new DependencyGraph({
|
||||||
|
roots: [root],
|
||||||
|
fileWatcher: fileWatcher
|
||||||
|
});
|
||||||
|
return dgraph.load().then(function() {
|
||||||
|
expect(dgraph.getOrderedDependencies('/root/index.js'))
|
||||||
|
.toEqual([
|
||||||
|
{id: '/root/index.js', path: '/root/index.js', dependencies: ['aPackage']},
|
||||||
|
{ id: 'aPackage/lib/index',
|
||||||
|
path: '/root/aPackage/lib/index.js',
|
||||||
|
dependencies: []
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
pit('should ignore malformed packages', function() {
|
pit('should ignore malformed packages', function() {
|
||||||
var root = '/root';
|
var root = '/root';
|
||||||
fs.__setMockFilesystem({
|
fs.__setMockFilesystem({
|
||||||
|
|
|
@ -184,6 +184,12 @@ DependecyGraph.prototype.resolveDependency = function(
|
||||||
var main = packageJson.main || 'index';
|
var main = packageJson.main || 'index';
|
||||||
modulePath = withExtJs(path.join(packageJson._root, main));
|
modulePath = withExtJs(path.join(packageJson._root, main));
|
||||||
dep = this._graph[modulePath];
|
dep = this._graph[modulePath];
|
||||||
|
|
||||||
|
// Some packages use just a dir and rely on an index.js inside that dir.
|
||||||
|
if (dep == null) {
|
||||||
|
dep = this._graph[path.join(packageJson._root, main, 'index.js')];
|
||||||
|
}
|
||||||
|
|
||||||
if (dep == null) {
|
if (dep == null) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
'Cannot find package main file for package: ' + packageJson._root
|
'Cannot find package main file for package: ' + packageJson._root
|
||||||
|
|
Loading…
Reference in New Issue