Show how three bundlers differ in parsing browser
field of package.json
.
Those three bundlers parse browser
field differently by
- Relative path (start with
./
or not) - Extension (end with
.js
or not) main
field
This package checks these compatibility by all the possible patterns of package.json
.
main | from | to | browserify | webpack | rn-packager |
---|---|---|---|---|---|
file1 | file1 | file2 | π | β | π |
The data row represents the following package.json
.
{
"main": "file1",
"browser": {
"file1": "file2"
}
}
- Column
main
is the value ofmain
field. - Column
from
is the first key ofbrowser
field. - Column
to
is the value offrom
.
Bundlers except webpack successfully parse the module.
main | from | to | browserify | webpack | rn-packager |
---|---|---|---|---|---|
file1 | file1 | file2 | π | β | π |
file1 | file1 | ./file2 | π | β | π |
file1 | file1 | file2.js | π | β | π |
file1 | file1 | ./file2.js | π | β | π |
file1 | ./file1 | file2 | π | β | β |
file1 | ./file1 | ./file2 | π | β | β |
file1 | ./file1 | file2.js | π | β | β |
file1 | ./file1 | ./file2.js | π | β | β |
file1 | file1.js | file2 | β | β | π |
file1 | file1.js | ./file2 | β | π | π |
file1 | file1.js | file2.js | β | β | π |
file1 | file1.js | ./file2.js | β | π | π |
file1 | ./file1.js | file2 | β | β | β |
file1 | ./file1.js | ./file2 | β | π | β |
file1 | ./file1.js | file2.js | β | β | β |
file1 | ./file1.js | ./file2.js | β | π | β |
./file1 | file1 | file2 | β | β | β |
./file1 | file1 | ./file2 | β | β | β |
./file1 | file1 | file2.js | β | β | β |
./file1 | file1 | ./file2.js | β | β | β |
./file1 | ./file1 | file2 | π | β | π |
./file1 | ./file1 | ./file2 | π | β | π |
./file1 | ./file1 | file2.js | π | β | π |
./file1 | ./file1 | ./file2.js | π | β | π |
./file1 | file1.js | file2 | β | β | β |
./file1 | file1.js | ./file2 | β | π | β |
./file1 | file1.js | file2.js | β | β | β |
./file1 | file1.js | ./file2.js | β | π | β |
./file1 | ./file1.js | file2 | β | β | π |
./file1 | ./file1.js | ./file2 | β | π | π |
./file1 | ./file1.js | file2.js | β | β | π |
./file1 | ./file1.js | ./file2.js | β | π | π |
file1.js | file1 | file2 | β | β | π |
file1.js | file1 | ./file2 | β | β | π |
file1.js | file1 | file2.js | β | β | π |
file1.js | file1 | ./file2.js | β | β | π |
file1.js | ./file1 | file2 | β | β | β |
file1.js | ./file1 | ./file2 | β | β | β |
file1.js | ./file1 | file2.js | β | β | β |
file1.js | ./file1 | ./file2.js | β | β | β |
file1.js | file1.js | file2 | π | β | π |
file1.js | file1.js | ./file2 | π | π | π |
file1.js | file1.js | file2.js | π | β | π |
file1.js | file1.js | ./file2.js | π | π | π |
file1.js | ./file1.js | file2 | π | β | β |
file1.js | ./file1.js | ./file2 | π | π | β |
file1.js | ./file1.js | file2.js | π | β | β |
file1.js | ./file1.js | ./file2.js | π | π | β |
./file1.js | file1 | file2 | β | β | β |
./file1.js | file1 | ./file2 | β | β | β |
./file1.js | file1 | file2.js | β | β | β |
./file1.js | file1 | ./file2.js | β | β | β |
./file1.js | ./file1 | file2 | β | β | π |
./file1.js | ./file1 | ./file2 | β | β | π |
./file1.js | ./file1 | file2.js | β | β | π |
./file1.js | ./file1 | ./file2.js | β | β | π |
./file1.js | file1.js | file2 | β | β | β |
./file1.js | file1.js | ./file2 | β | π | β |
./file1.js | file1.js | file2.js | β | β | β |
./file1.js | file1.js | ./file2.js | β | π | β |
./file1.js | ./file1.js | file2 | π | β | π |
./file1.js | ./file1.js | ./file2 | π | π | π |
./file1.js | ./file1.js | file2.js | π | β | π |
./file1.js | ./file1.js | ./file2.js | π | π | π |
file3 | file1 | file2 | β | β | β |
file3 | file1 | ./file2 | β | β | β |
file3 | file1 | file2.js | β | β | β |
file3 | file1 | ./file2.js | β | β | β |
file3 | ./file1 | file2 | β | β | π |
file3 | ./file1 | ./file2 | π | β | π |
file3 | ./file1 | file2.js | β | β | π |
file3 | ./file1 | ./file2.js | π | β | π |
file3 | file1.js | file2 | β | β | β |
file3 | file1.js | ./file2 | β | π | β |
file3 | file1.js | file2.js | β | β | β |
file3 | file1.js | ./file2.js | β | π | β |
file3 | ./file1.js | file2 | β | β | π |
file3 | ./file1.js | ./file2 | β | π | π |
file3 | ./file1.js | file2.js | β | β | π |
file3 | ./file1.js | ./file2.js | π | π | π |
./file3 | file1 | file2 | β | β | β |
./file3 | file1 | ./file2 | β | β | β |
./file3 | file1 | file2.js | β | β | β |
./file3 | file1 | ./file2.js | β | β | β |
./file3 | ./file1 | file2 | β | β | π |
./file3 | ./file1 | ./file2 | π | β | π |
./file3 | ./file1 | file2.js | β | β | π |
./file3 | ./file1 | ./file2.js | π | β | π |
./file3 | file1.js | file2 | β | β | β |
./file3 | file1.js | ./file2 | β | π | β |
./file3 | file1.js | file2.js | β | β | β |
./file3 | file1.js | ./file2.js | β | π | β |
./file3 | ./file1.js | file2 | β | β | π |
./file3 | ./file1.js | ./file2 | β | π | π |
./file3 | ./file1.js | file2.js | β | β | π |
./file3 | ./file1.js | ./file2.js | π | π | π |
file3.js | file1 | file2 | β | β | β |
file3.js | file1 | ./file2 | β | β | β |
file3.js | file1 | file2.js | β | β | β |
file3.js | file1 | ./file2.js | β | β | β |
file3.js | ./file1 | file2 | β | β | π |
file3.js | ./file1 | ./file2 | π | β | π |
file3.js | ./file1 | file2.js | β | β | π |
file3.js | ./file1 | ./file2.js | π | β | π |
file3.js | file1.js | file2 | β | β | β |
file3.js | file1.js | ./file2 | β | π | β |
file3.js | file1.js | file2.js | β | β | β |
file3.js | file1.js | ./file2.js | β | π | β |
file3.js | ./file1.js | file2 | β | β | π |
file3.js | ./file1.js | ./file2 | β | π | π |
file3.js | ./file1.js | file2.js | β | β | π |
file3.js | ./file1.js | ./file2.js | π | π | π |
./file3.js | file1 | file2 | β | β | β |
./file3.js | file1 | ./file2 | β | β | β |
./file3.js | file1 | file2.js | β | β | β |
./file3.js | file1 | ./file2.js | β | β | β |
./file3.js | ./file1 | file2 | β | β | π |
./file3.js | ./file1 | ./file2 | π | β | π |
./file3.js | ./file1 | file2.js | β | β | π |
./file3.js | ./file1 | ./file2.js | π | β | π |
./file3.js | file1.js | file2 | β | β | β |
./file3.js | file1.js | ./file2 | β | π | β |
./file3.js | file1.js | file2.js | β | β | β |
./file3.js | file1.js | ./file2.js | β | π | β |
./file3.js | ./file1.js | file2 | β | β | π |
./file3.js | ./file1.js | ./file2 | β | π | π |
./file3.js | ./file1.js | file2.js | β | β | π |
./file3.js | ./file1.js | ./file2.js | π | π | π |
main | from | to | browserify | webpack | rn-packager |
---|---|---|---|---|---|
file1.js | file1.js | ./file2 | π | π | π |
file1.js | file1.js | ./file2.js | π | π | π |
./file1.js | ./file1.js | ./file2 | π | π | π |
./file1.js | ./file1.js | ./file2.js | π | π | π |
file3 | ./file1.js | ./file2.js | π | π | π |
./file3 | ./file1.js | ./file2.js | π | π | π |
file3.js | ./file1.js | ./file2.js | π | π | π |
./file3.js | ./file1.js | ./file2.js | π | π | π |
to
must contain./
from
must contain.js
main
andfrom
must be the same when replacingmain
- any
main
patterns are ok when not replacingmain
from
must contain./
unless it's the same asmain
(requires Node v6 or later)
git clone https://github.com/shinout/bundler-comparison
cd bundler-comparison
npm install
npm start
npm start
will show TSV of the compatibility.