0

我对子项目添加了一些更改example-app-v12-monorepo以反映我的情况:

  1. 创建public_api.ts文件作为共享类的桶examples/example-app-v12-monorepo/projects/app1/src/app/shared/public_api.ts

  2. 配置tsconfig.json文件,examples/example-app-v12-monorepo/tsconfig.json因此它包含我的更改:

"paths": {
  "@app1/shared": ["projects/app1/src/app/shared/public_api"]
}
  1. 在中添加了模块映射examples/example-app-v12-monorepo/projects/app1/jest.config.js
moduleNameMapper: {
 '@app1/shared': 'projects/app1/src/app/shared'
}
  1. 将共享文件夹的相对路径更改为绝对路径。例如:

'../shared/highlight.directive'->'@app1/shared'

结果:当我尝试运行测试时yarn test出现错误:

Configuration error:
    
Could not locate module @app1/shared mapped as:
projects/app1/src/app/shared.
    
Please check your configuration for these entries:
{
  "moduleNameMapper": {
     "/@app1\/shared/": "projects/app1/src/app/shared"
  },
  "resolver": /Users/psmul/Desktop/jest-preset-angular/examples/example-app-v12-monorepo/node_modules/jest-preset-angular/build/resolvers/ng-jest-resolver.js
}

有没有办法配置/修复这个路径映射列表?

##edit 由于调查进度

当我添加<rootDir>到绝对路径时,我得到了最接近想要的结果:导致 @app1/shared': '<rootDir>/projects/app1/src/app/shared/public_apijest-preset-angular/examples/example-app-v12-monorepo/projects/app1/projects/app1/src/app/shared/public_api

基本上,如果我删除/projects/app1部分,一切都会按预期工作。

我现在的问题:在我的(大)应用程序中,我有很多来自项目根目录的预定义路径,而 Jest 需要在子项目级别(monorepo)设置我需要找出一种方法来转换传递的路径所以它不会加倍路径段。示例:tsconfig 路径: example/path/project1/app/src/app/public_api.ts Jest 设置级别: project1/app/src/app/public_api.ts

结果: example/path/project1/app/project1/app/src/app/public_api.ts

有没有办法改造它?

4

1 回答 1

0

您还必须public_api在映射器中,或者您可以 public_api更改index

module.exports = {
  rootDir: './',
  moduleNameMapper: {
    '@app1/shared': '<rootDir>/projects/app1/src/app/shared/public_api',
  },
  ...
};
于 2021-12-14T13:07:18.717 回答