背景
最近 Monorepo 项目引用了一个可用修饰符的库。 修饰符编译通过条件
- 要用添加 @babel/plugin-proposal-decorators
- 需要[babel.config.js]下配置
plugins: [
["@babel/plugin-proposal-decorators", { "legacy": true }]
]
玄学现象
代码完成后,单独此项目下 test, 绿灯通过。
但是
提交代码前,在根目录集体 test 时,项目报错
Support for the experimental syntax 'decorators-legacy' isn't currently enabled
纠错复盘
- 确认单独项目测试没问题
- 有可能依赖有此修饰符的 其他模块 未满足 背景里的 修饰符编译通过条件
解决:
- 模块全部添加[@babel/plugin-proposal-decorators ]
- 全部配置 [babel.config.js] 然后, yarn && yarn test 依然报错。
- 然后不得以。把报错的 [子模块A] 的 package.json 里的 test 命令删除
"scripts": {
// 删除下面一行
"test": "jest",
},
然后根目录再次 yarn test.
然而
[子模块A] 还是报错
但是
为啥[子模块A] 还报错?test 命令不都注释了么。
犹如醍醐干顶
结局
在根目录下
- 添加[@babel/plugin-proposal-decorators ]
- 配置 [babel.config.js] 再次根目录下 yarn test 通过
原因
monorepo 根目录下的yarn test时,并不是 依次执行 子项目 package.json 里的 yarn test 命令。
而是以根目录 + 子项目 作为一个整体的项目。根目录就是这个项目的项目路径。