Предположим, что у нас есть package1
и package2
. Если package2
пытается импортировать модуль package1
, мы получаем сообщение об ошибке module not found
. Импорт выглядит как import { ... } from 'package1/styles'
. Имейте в виду, что импорт как import { ... } from 'package1'
работает. На мой взгляд, эти проблемы с импортом вызваны тем, что lerna неправильно связывает папки. Я ожидал бы, что node_modules
из package2
должен содержать только package1/dist
вместо package1
. Как решить эти проблемы с импортом?
Соответствующие package1
файлы ниже.
package.json:
...
"main": "./dist/index.js",
"files": ["dist"]
...
tsconfig.json:
{
"compilerOptions": {
"outDir": "./dist/",
"noImplicitAny": false,
"declaration": true,
"jsx": "react",
"allowJs": false,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"lib": ["esnext", "dom"]
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
После того, как мы запустим lerna run build
, мы получим следующую структуру каталогов:
packages/package2/node_modules/package1/
├── dist
│ ├── index.d.ts
│ ├── index.js
│ └── styles
│ ├── index.d.ts
│ └── index.js
├── node_modules
├── package-lock.json
├── package.json
├── src
│ ├── index.ts
│ └── styles
│ └── index.ts
├── tsconfig.json
└── webpack.config.js