Я пытаюсь настроить рабочие области пряжи с моим экземпляром docker. Это моя структура каталогов:
/monorepo/
/node_modules/
@libs/common
@services/common
@services/project-A
...OTHER DEPS...
package.json
/services/
/common/
index.jsx
package.json
/project-A/
webpack.base.config.js
**REACT project with babel, webpack, etc**
/libs/
/tools/
/common/
index.jsx
package.json
Чтобы упростить мою настройку docker, я только что настроил этот том в моем docker compose, который отображает весь каталог monorepo:
volumes:
- '../../../monorepo:/monorepo'
From там в моем Project-A я импортирую @ libs / common и @ services / common. Это прекрасно работает, когда обычные библиотеки экспортируют простые функции, такие как:
export const Add = (a,b) => a+b
У Webpack нет проблем с решением этой проблемы и сборкой Project-A.
Однако, когда я пытаюсь импортировать компонент из одной из общих библиотек, как это:
/libs/tools/common:
import React from 'react'
export MySharedComponent = () => <>HELLLO</>
Я получаю ошибку в процессе сборки:
Error: Cannot find module '/monorepo/libs/tools/common/webpack.base.config.js'
Require stack:
- /monorepo/node_modules/eslint-import-resolver-webpack/index.js
- /monorepo/node_modules/eslint-module-utils/resolve.js
- /monorepo/node_modules/eslint-plugin-import/lib/rules/no-unresolved.js
- /monorepo/node_modules/eslint-plugin-import/lib/index.js
Файл eslint в Project-A:
{
"parser": "babel-eslint",
"env": {
"browser": true,
"node": true,
"jest": true,
"cypress/globals": true
},
"settings": {
"import/resolver": {
"webpack": {
"config": "webpack.base.config.js"
}
}
}
}
babel.r c в Project-A
{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "current"
}
}
],
"@babel/preset-react",
"@babel/preset-flow"
],
"env": {
"test": {
"plugins": [
[
"babel-plugin-webpack-alias",
{
"config": "./webpack.base.config.js"
}
]
]
}
}
}
Мой вопрос:
Основная проблема в том, что в общих репозиториях не настроена конфигурация webpack. Поэтому рабочая область не знает, как скомпилировать мои общие ресурсы?
Должна ли быть только 1 конфигурация сборки веб-пакета в моей рабочей области, используемая всеми проектами в рабочей области? В настоящее время у меня есть только 1 конфиг под Project-A?
Что произойдет, если у меня есть определенные c потребности веб-пакетов для каждого проекта, имеет ли смысл 1 конфигурация (если это ответ)?