Использование контейнера папок в одной папке для общих пакетов - PullRequest
0 голосов
/ 08 мая 2018

У меня много приложений в хранилище 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 голосов
/ 09 мая 2018

Мне нужно больше узнать о содержимом каждого файла package.json и проекте в целом, но вот некоторые элементы, которые могут помочь вам получить структуру goo, которая выполнила бы то, что вы сами настроили.

Если вы действительно хотите пойти по правильному монорепо-пути, вы можете взглянуть на https://github.com/lerna/lerna, который будет достаточно хорошо работать для узла 8 и выше (например, автоматическая символическая ссылка на зависимости файлов, что полезно в процессе разработки).

Другой способ решить эту проблему в TypeScript - использовать пути:

tsconfig.json

{
  "compilerOptions": {
    // path
    "baseUrl": ".",
    "paths": {
        "@lib/*": ["./*"],
        "@shared/*": ["../shared/*"]
    }
}

Однако, в зависимости от того, как вы строите и запускаете свои проекты, пути иногда не обрабатываются должным образом. Возможно, вам придется использовать tsconfig-paths, если вы запускаете проект с использованием ts-node, или tsconfig-paths-webpack-plugin, если вы используете TypeScript как часть проекта веб-пакета.

...