使用库兄弟文件夹容器来共享包

时间:2018-05-08 19:11:13

标签: javascript typescript npm yarnpkg

我在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/"
  }
}

我被卡住了因为它不起作用(但也没有抛出错误)。你能帮助我吗?谢谢!

1 个答案:

答案 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