要旨
我喜欢遵循“干”(不要重复自己)的原则。但目前,我在三个不同的地方拥有几乎相同的路径配置:
1.类型记录配置文件
我有一个带有多个Bazel类型记录包的monorepo,因此我需要在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能够识别类型记录别名。(为此,我使用了一个名为模块别名的包。
"_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配置中,以便测试能够找到路径:
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
发布于 2020-03-30 17:40:34
类型记录配置文件
"paths": {
"@cents-ideas/*": ["./packages/*"]
},节点包文件
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支持类似于类型记录配置的通配符。
发布于 2020-01-20 16:03:41
你用的是纱线,所以也许你应该看看纱线工作区。你应该可以添加
package.json
{
//...
"workspaces": [
"packages/*
]
}并运行yarn,这将使符号链接到node_modules,您应该能够删除上述三种配置。
https://stackoverflow.com/questions/59813119
复制相似问题