Я пытаюсь настроить рабочие пространства пряжи с моим экземпляром докера. Это моя структура каталогов:
/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
Чтобы упростить настройку докера, я только что настроил этот том в своем наборе докеров, который отображает весь каталог монорепозитория:
volumes:
- '../../../monorepo:/monorepo'
Оттуда в моем 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.rc в рамках 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"
}
]
]
}
}
}
Мой вопрос:
Основная проблема заключается в том, что в общих репозиториях нет конфигурации веб-пакета. Следовательно, рабочая область не знает, как скомпилировать мои общие ресурсы?
Должна ли быть только одна конфигурация сборки веб-пакета в моей рабочей области, используемая всеми проектами в рабочей области? В настоящее время у меня есть только 1 конфигурация в Project-A?
Что произойдет, если у меня есть определенные потребности в веб-пакете для каждого проекта, имеет ли смысл 1 конфигурация (если это ответ)?