我有一个 React 应用程序,在一个单一的仓库中。我已经为可重用的 CSS (@monorepo/theme) 创建了一个实用程序包,并且我想从我的 react 应用程序中从主题包中编写一个 css 规则。下面是我正在尝试做的一个示例:
包/fe/my-app/src/App.module.css:
.red {
composes: red from '@monorepo/theme/src/css/color'
}
包/实用程序/主题/src/css/colors.css:
.red {
color: red;
}
这目前不起作用,我收到此错误:
./src/App.module.css (.../monorepo/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-4-1!/...monorepo/node_modules/postcss-loader/src??postcss!./src/App.module.css)
Module not found: Can't resolve './@monorepo/theme/src/css/colors.css' in '.../monorepo/my-app/packages/fe/my-app/src'
我的配置...
lerna.json:
{
"packages": [
"packages/fe/*",
"packages/utils/*"
],
"version": "independent",
"npmClient": "yarn",
"useWorkspaces": true
}
包.json:
{ "name": "monorepo", "private": true, "devDependencies": { "lerna": "^3.22.1" }, "workspaces": [ "packages/fe/ ", "packages/utils/ " ] }
包/fe/my-app/package.json:
{
"name": "@monorepo/my-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"@monorepo/theme": "1.0.0",
"@monorepo/components": "1.0.0",
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"@types/jest": "^24.0.0",
"@types/node": "^12.0.0",
"@types/react": "^16.9.0",
"@types/react-dom": "^16.9.0",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-scripts": "3.4.1",
"typescript": "~3.7.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
包/实用程序/主题/package.json:
{
"name": "@monorepo/theme",
"private": true,
"version": "1.0.0",
"scripts": {
"start": "yarn compile:watch",
"compile": "tsc",
"compile:watch": "tsc -d --watch"
},
"dependencies": {
"@monorepo/theme": "1.0.0",
"typescript": "~3.7.2"
}
}
tsconfig.base.json:
{
"compilerOptions": {
"target": "es5",
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "react",
"experimentalDecorators": true,
"emitDecoratorMetadata": true
},
"exclude": ["node_modules"]
}
包/fe/my-app/tsconfig.json:
{
"extends": "../../../tsconfig.base.json",
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react",
"experimentalDecorators": true,
"emitDecoratorMetadata": true
},
"include": [
"src"
]
}
包/实用程序/主题/tsconfig.json:
{
"extends": "../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs"
}
}