[Monorepo] [玄学] 单项目test通过,根目录集体test时通不过。

273 阅读1分钟

背景

最近 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 

纠错复盘

  1. 确认单独项目测试没问题
  2. 有可能依赖有此修饰符的 其他模块 未满足 背景里的 修饰符编译通过条件 解决:
    • 模块全部添加[@babel/plugin-proposal-decorators ]
    • 全部配置 [babel.config.js] 然后, yarn && yarn test 依然报错。
  3. 然后不得以。把报错的 [子模块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 命令。

而是以根目录 + 子项目 作为一个整体的项目。根目录就是这个项目的项目路径。