Skip to content

Commit 1fe8744

Browse files
committed
feat: tolerant missing main file like npm package simple-line-icons
1 parent c626555 commit 1fe8744

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

spec/package-reader.spec.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,32 @@ test('packageReader rejects missing main', t => {
4949
});
5050
});
5151

52+
test('packageReader uses default index.js as main path if main file is missing but not required', t => {
53+
getReader('foo', {
54+
'node_modules/foo/package.json': '{"name":"foo", "main": "foo", "version": "1.0.0"}',
55+
'node_modules/foo/bar.js': 'lorem'
56+
}).then(r => {
57+
r.readResource('bar').then(
58+
unit => {
59+
t.equal(r.version, '1.0.0');
60+
t.deepEqual(unit, {
61+
path: 'node_modules/foo/bar.js',
62+
contents: 'lorem',
63+
moduleId: 'foo/bar',
64+
packageName: 'foo'
65+
});
66+
67+
t.equal(r.name, 'foo');
68+
t.equal(r.mainPath, 'index.js');
69+
t.deepEqual(r.browserReplacement, {});
70+
},
71+
err => {
72+
t.fail(err.message);
73+
},
74+
).then(t.end);
75+
});
76+
});
77+
5278
test('packageReader reads main file', t => {
5379
getReader('foo', {
5480
'node_modules/foo/package.json': '{"name":"foo", "main": "index"}',

src/package-reader.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ export default class PackageReader {
2525
this.browserReplacement = _browserReplacement(metadata.browser);
2626
})
2727
.then(() => this._nodejsLoadAsDirectory(''))
28+
// when main file is missing, falls back to default index.js
29+
.catch(() => 'index.js')
2830
.then(mainPath => {
2931
this.mainPath = mainPath;
3032
this.parsedMainId = parse(stripJsExtension(mainPath));

0 commit comments

Comments
 (0)