Lerna + TypeScript + npm: Как правильно настроить конфигурацию так, чтобы @ projectName / package пути через каталог dist? - PullRequest
2 голосов
/ 03 мая 2020

Я пытаюсь настроить свой проект как monorepo, но у меня возникла досадная проблема с маршрутизацией с помощью TypeScript & Lerna.

У меня есть 2 реагирующих проекта, API и основной проект который хранит мою модель предметной области и определения машинописи. На данный момент мне нужно иметь возможность использовать код из ядра в моем API и определения в моих 2 реагирующих проектах.

Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно найти путь от root каждой упаковки. Например, @projectName/core/src/models/myModel вместо @projectName/core/models/myModel. Каталог dist не содержит этой структуры, и именно это я и хочу импортировать.

Я нашел пару статей, предлагающих, как его настроить, но я все еще сталкиваюсь с проблемами и не уверен, где Я ошибаюсь.

Я сейчас сосредоточен на экспорте @projectName/core.

. / Tsconfig. json

{
  "exclude": ["node_modules", "dist"],
  "compilerOptions": {
    "baseUrl": ".",
    "sourceMap": true,
    "composite": true,
    "declaration": true,
    "paths": {
      "@projectName/core": ["packages/core/src"],
      "@projectName/api": ["packages/api/src"],
      "@projectName/admin": ["packages/admin/src"],
      "@projectName/client": ["packages/client"]
    }
  }
}

. / Package . json

{
  "name": "projectName",
  "private": true,
  "devDependencies": {
    "lerna": "^3.20.2",
    "typescript": "^3.8.3"
  }
}

. / Packages / core / tsconfig. json

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "lib": ["ES2019"],
    "module": "commonjs",
    "target": "ES2019",
    "strict": true,
    "resolveJsonModule": true,
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "./dist",
    "rootDir": "./src"
  },

  "include": ["src/**/*"]
}

. / Packages / core / package. json

{
  "name": "@projectName/core",
  "version": "0.0.1",
  "private": true,
  "directories": {
    "lib": "dist",
    "test": "tests"
  },
  "files": [
    "dist"
  ],
  "scripts": {
    "build": "npm run clean && npm run compile",
    "clean": "rm -rf ./dist",
    "compile": "tsc"
  },
  "dependencies": {
  },
  "devDependencies": {
    "typescript": "^3.8.3",
    "webpack": "^4.43.0",
  }
}

. / Packages / api / tsconfig. json

{
  "extends": "../../tsconfig.json",
  "compilerOptions": {
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "lib": ["ES2019"],
    "module": "commonjs",
    "target": "ES2019",
    "strict": true,
    "resolveJsonModule": true,
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "dist"
  },
  "include": ["src/**/*"]
}

. / Packages / api / package. json

{
  "name": "@projectName/api",
  "version": "0.0.1",
  "description": "api",
  "files": [
    "dist"
  ],
  "main": "dist/server.js",
  "scripts": {
  },
  "dependencies": {
    "@packageName/core": "^0.0.1",
  },
  "devDependencies": {
    "typescript": "^3.8.3",
    "webpack": "^4.43.0",
    "webpack-node-externals": "^1.7.2"
  },
  "private": true
}

path

Я удалил зависимости из приведенного выше, чтобы они были читабельными.

Эти настройки были добавлены в ./tsconfig.json в попытке заставить это работать:

    "composite": true,
    "declaration": true

Любая помощь будет высоко ценится. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...