Xena - 纱线工作区
- components : 共享代码所在的位置
- admin2-client : CRA react-app 想要使用组件
单回购设置:
xena
|----- node_modules
|----- package.json
|----- admin-client2
|------ node_modules
|------ src
|------ packages.json
|----- components
|----- nmds-components
|----- node_modules
|----- src
|----- index.js
|----- packages.json
|----- constants
|----- countries.js
|----- languages.js
|----- node_modules
|----- package.json
共享的 react 组件不会通过 babel 进行转译,因此消费应用程序会给出 babel 错误。
23 |
24 |
> 25 | dismissError = () => this.setState({ isErrorHidden: true });
| ^
26 |
27 | render() {
28 | const { error } = this.props;
Add @babel/plugin-proposal-class-properties (https://git.io/vb4SL) to the 'plugins' section of your Babel config to enable transformation.
我已将其.babelrc
放入我的共享组件文件夹(nmds-component)。也"source":true
给共享组件package.json
。
根包.json
{
"name": "xena",
"version": "0.0.1",
"description": "NextJS, CRA app monorepo",
"main": "index.js",
"repository": "https://github.com/s4kh/xena",
"author": "skh",
"license": "MIT",
"private": true,
"scripts": {
"clean": "shx rm -rf **/node_modules",
"dev-admin2": "yarn workspace admin2-client start"
},
"devDependencies": {
"node-sass-chokidar": "^1.3.3",
"npm-run-all": "^4.1.3",
"shx": "^0.3.2"
},
"workspaces": [
"components/*",
"admin2-client"
]
}
admin2-client package.json
{
"name": "admin2-client",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-scripts": "2.1.8",
"nmds-components": "1.0.0" << THE SHARED COMPONENT
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": [
">0.2%",
"not dead",
"not ie <= 11",
"not op_mini all"
]
}
我的猜测是react-scripts start
不会在里面转译代码node_modules
,而是作为符号链接nmds-components
存在于根目录中。node_modules