我在mono git存储库中有很多应用程序。我想在我的应用程序之间共享一些库。
这是我的目录结构:
.
├── libs
│ └── messages
| ├── package.json
| ├── src
| ├── tsconfig.json
| └── ...all other good things for a library
├── main
│ ├── config
│ ├── dist
│ ├── node_modules
│ ├── package.json
│ ├── package-lock.json
│ ├── src
│ └── tsconfig.json
├── README.md
└── server
├── main.ts
├── node_modules
├── package.json
├── package-lock.json
├── setupEnvVars.js
├── src
└── tsconfig.json
我想将库“message”添加到我的项目“main”中,所以我尝试以这种方式添加它:
{
"name": "me",
"version": "1.0.0",
"main": "index.js",
"private": true,
"dependencies": {
"@me/messages": "../libs/messages/"
}
}
我被卡住了因为它不起作用(但也没有抛出错误)。你能帮助我吗?谢谢!
答案 0 :(得分:0)
我需要更多地了解每个package.json文件和整个项目的内容,但是这里有一些元素可以帮助你获得一个goo结构,可以完成你自己设定的目标。
如果你真的想要采用正确的monorepo方式,你可能想看看https://github.com/lerna/lerna哪个适用于Node 8及以上(例如文件依赖的自动符号链接,这在发展)。
在TypeScript中解决此问题的另一种方法是使用路径:
tsconfig.json
{
"compilerOptions": {
// path
"baseUrl": ".",
"paths": {
"@lib/*": ["./*"],
"@shared/*": ["../shared/*"]
}
}
但是,根据您构建和运行项目的方式,路径有时无法正确处理。如果使用tsconfig-paths
运行项目,则可能需要使用ts-node
;如果使用TypeScript作为webpack项目的一部分,则可能需要使用tsconfig-paths-webpack-plugin
。