首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止在Monorepo中复制类型记录路径配置

防止在Monorepo中复制类型记录路径配置
EN

Stack Overflow用户
提问于 2020-01-19 18:31:29
回答 2查看 524关注 0票数 2

要旨

我喜欢遵循“干”(不要重复自己)的原则。但目前,我在三个不同的地方拥有几乎相同的路径配置:

1.类型记录配置文件

我有一个带有多个Bazel类型记录包的monorepo,因此我需要在tsconfig.json中使用这样的路径来引用它们

代码语言:javascript
复制
"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能够识别类型记录别名。(为此,我使用了一个名为模块别名的包。

代码语言:javascript
复制
"_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配置中,以便测试能够找到路径:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-30 17:40:34

类型记录配置文件

代码语言:javascript
复制
"paths": {
  "@cents-ideas/*": ["./packages/*"]
},

节点包文件

代码语言:javascript
复制
const moduleAlias = require('module-alias');

const registerAliases = () => {
  if (process.env.ENV === 'dev') {
    const fs = require('fs');
    const paths: string[] = fs.readdirSync('./packages');
    paths.forEach(addPackageAlias);
  }
};

const addPackageAlias = (name: string) => {
  moduleAlias.addAlias(`@cents-ideas/${name}`, `${__dirname}../../../packages/${name}`);
};

registerAliases();

Jest配置文件

在巴泽尔的帮助下修正了。但我确信Jest支持类似于类型记录配置的通配符。

票数 1
EN

Stack Overflow用户

发布于 2020-01-20 16:03:41

你用的是纱线,所以也许你应该看看纱线工作区。你应该可以添加

package.json

代码语言:javascript
复制
{
  //...
  "workspaces": [
    "packages/*
  ]
}

并运行yarn,这将使符号链接到node_modules,您应该能够删除上述三种配置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59813119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档