所以我正在lerna
为我们的反应应用程序尝试 monorepo 设计。这个想法是创建一个 repo,它将所有的 react 项目作为lerna
包以及一些在应用程序之间共享的通用模块/组件。
现在所有这些通用模块/组件都是 es6 模块。没有被转译。因为公共模块也在不断发展。如果我们构建/转换它们,我确信在那之后反应 HMR 将不起作用(一个疯狂的猜测)。以下是我的目录结构
package.json
lerna.json
|--packages
|--common
|--react-app
|--constants
|--utilities
common
table,accordion
包含作为默认 es6 模块导出的常见反应元素等。
react-app
导入common
为dependency
. react-app
有 webpack 构建配置集。
现在当我将common
模块导入我的react-app
babeltransform
失败并出现此错误
Button.component.jsx 7:19
Module parse failed: Unexpected token (7:19)
You may need an appropriate loader to handle this file type.
| const { Search } = Input;
| class TextBoxWithButton extends React.Component {
> static propTypes = {
| placeholder: PropTypes.string.isRequired,
| onAction: PropTypes.func.isRequired,
@ ./src/App/Modules/Todo/Components/Header/Header.component.jsx 10:0-111 16:25-41
@ ./src/App/Modules/Todo/Todo.component.jsx
@ ./src/App/Router/index.jsx
@ ./src/App/Layout/index.jsx
@ ./src/App/index.jsx
@ ./src/App.hot.js
@ ./src/index.jsx
这意味着babel-loader
无法解析和转译node_nodules
文件夹中的内容,这是有道理的,因为所有依赖项都应该已经转译。但不总是。如果您管理本地依赖项,则无法始终构建它们(这就是我的想法)
现在我在网上找到了一些解决方案,使 1在排除正则表达式中bable-loader
不排除node_modules
或忽略@mypackage
。但在我的情况下没有任何效果。
这是我到目前为止所尝试的。
exlucde: /node_modules/
从babel-loader
=>中删除不工作- 使用
require.resolve('babel-loader')
=> 不工作 - 添加
resolve.symlinks= false
. - 添加
resolve.modules='node_modules'
或path.resove(__dirname,'node_modules')
=> 不工作 babel-loader
添加要包含的包路径include: [srcPath, lernaPackagesPath]
,
似乎没有任何效果。有什么我想念的吗? 这是我的 git test repo 的链接。