From the npm documentation:
The main field is a module ID that is the primary entry point to your
program. That is, if your package is named foo, and a user installs
it, and then does require(“foo”), then your main module’s exports
object will be returned.This should be a module ID relative to the root of your package
folder.For most modules, it makes the most sense to have a main script and
often not much else.
To put it short:
- You only need a
mainparameter in yourpackage.jsonif the entry point to your package differs fromindex.jsin its root folder. For example, people often put the entry point tolib/index.jsorlib/<packagename>.js, in this case the corresponding script must be described asmaininpackage.json. - You can’t have two scripts as
main, simply because the entry pointrequire('yourpackagename')must be defined unambiguously.