- allows `main` to optionally contain `.js`
- allows missing `main` property, and defaults to `index.js`