Гист
Мне нравится следовать принципу "dry" (не повторяйся). Но в настоящее время у меня есть почти одинаковая конфигурация пути в трех разных местах:
1. Файл конфигурации Typescript
У меня есть монорепо с несколькими пакетами Bazel Typescript, и поэтому мне нужно ссылаться на них такими путями внутри tsconfig.json
"paths": {
"@cents-ideas/enums": ["./packages/enums"],
"@cents-ideas/utils": ["./packages/utils"],
"@cents-ideas/event-sourcing": ["./packages/event-sourcing"],
"@cents-ideas/models": ["./packages/models"]
},
2. Файл пакета узла
Для разработки с ts-node
Мне также необходимо добавить пути к package.json
, чтобы Node.Js мог распознавать псевдонимы Typescript. (Для этого я использую пакет module-alias .
"_moduleAliases": {
"@cents-ideas/enums": "./packages/enums",
"@cents-ideas/utils": "./packages/utils",
"@cents-ideas/event-sourcing": "./packages/event-sourcing",
"@cents-ideas/models": "./packages/models"
}
3. Файл конфигурации Jest
Наконец, мне также необходимо добавить эти пути в Jest config, чтобы тесты могли находить пути:
moduleNameMapper: {
'^@cents-ideas/utils(.*)$': '<rootDir>/packages/utils$1',
'^@cents-ideas/event-sourcing(.*)$': '<rootDir>/packages/event-sourcing$1',
'^@cents-ideas/enums(.*)$': '<rootDir>/packages/enums$1',
'^@cents-ideas/models(.*)$': '<rootDir>/packages/models$1',
},
Цель
Моя цель - создать одно общее место, где я могу указать пути, и все остальные места будут обновляться автоматически.
На тот случай, если вам понадобится дополнительная информация о проекте, вы можете проверить его здесь: https://github.com/flolude/cents-ideas