При сборке пакетов в monorepo с использованием Lerna , как настроить веб-пакет так, чтобы внутри-monorepro, кросс-пакетные зависимости генерировали исходные карты, которые указывают на установленное местоположение (например, ./node_modules/@foo/bar/lib/foobar.js
) и не указывает на относительный путь к локальной папке, в которой был собран пакет (например, ../bar/lib/foobar.js
)? Последняя папка не будет существовать во время выполнения, что нарушает отладку в Chrome или VSCode.
Справочная информация: я использую библиотеку amplify-js
. Его исходные карты нарушены, что делает отладку болезненной. Я хочу создать PR, чтобы исправить исходные карты этой библиотеки, но я не уверен, какие изменения необходимы.
Проблема состоит в том, что исходные карты, созданные для зависимостей внутри монорепо, содержат относительные пути к местоположению во время сборки, например webpack:///../core/lib/index.js
. Но при установке amplify-js
из npm, только корневой пакет устанавливается непосредственно под node_modules
в node_modules/amplify-js
. Другие зависимые пакеты в monorepo, например пакет core
устанавливается под @aws-amplify
, например /node_modules/@aws-amplify/core
. Это приводит к сбою пути webpack:///../core/lib/index.js
в исходной карте во время выполнения, поскольку ../core
не существует.
Вот выдержка из карты источника с проблемой (
https://unpkg.com/aws-amplify@1.1.22/dist/aws-amplify.js.map). Я отформатировал это для ясности:
{
"version":3,
"sources:[
"webpack:///webpack/universalModuleDefinition",
"webpack:///aws-amplify.js",
"webpack:///webpack/bootstrap 02623d179e36bcc68243",
"webpack:////root/app/node_modules/aws-sdk/lib/core.js",
"webpack:///../core/lib/index.js", // PROBLEM!!!!
"webpack:////root/app/node_modules/graphql/module/error/index.js",
Как настроить веб-пакет (или Lerna? Или что-то еще?) Так, чтобы исходные карты для зависимостей intra-monorepo всегда указывали на папку node_modules, где эти зависимости будут установлены во время выполнения?
Используя приведенную выше выдержку, я хотел бы увидеть следующее:
{
"version":3,
"sources:[
"webpack:///webpack/universalModuleDefinition",
"webpack:///aws-amplify.js",
"webpack:///webpack/bootstrap 02623d179e36bcc68243",
"webpack:////root/app/node_modules/aws-sdk/lib/core.js",
"webpack:////root/app/node_modules/@aws-amplify/core/lib/index.js", // OK
"webpack:////root/app/node_modules/graphql/module/error/index.js",
Если вы хотите воспроизвести проблему:
Ожидается: нет относительных путей к другим пакетам
Фактически: относительные пути, такие как "webpack:///../core/lib/index.js"