Если ваша внутренняя кодовая база всегда переносит источники, почему бы не просто import { thing } from "my-package/src/main.js
?
Тогда вы можете просто оставить основное поле как dist для потребителей, которые в идеале не должны отслеживать дополнительные пути при импорте ваших пакетов.
В вашем ответе осталось много деталей, но предполагается, что вы используете один веб-пакет / другой экземпляр для компиляции всех ваших пакетов.
Другой подход, поскольку вы уже связали все свои пакеты с помощью одного и того же шага компиляции, почему бы просто не использовать относительные пути между пакетами? Таким образом, вам никогда не придется выступать в роли потребителя, но с немного другими потребностями.
И, наконец, третий подход, который, как мне кажется, звучит немного запутанно, но должен делать именно то, что вы просите. Создайте сценарий, который использует globby или какой-либо другой пакет npm для захвата всех файлов package.json в вашем хранилище (кроме node_modules!). require () / переберите эти файлы манифеста package.json и установите для основного поля входное значение (скажем, "dist"). Затем создайте два файла bin js (подсказка: поле bin) с именами set-main-dist и set-main-src и, возможно, третий с именем unset-main.
Далее, независимо от того, какие скрипты вы запускаете в файлах package.json в корневом каталоге (или с помощью lerna run), убедитесь, что скрипт выглядит так:
"prebuild": "set-main-src"
или как это
"build": "set-main-src && build etc"
Надеюсь, один из этих вариантов сработает для вас. Помните, что редко стоит идти против потока обычных шаблонов в инструментах, а что нет. Сделай так, чтобы оно того стоило.