Зависимости нескольких проектов с помощью Webpack + Typescript - PullRequest
0 голосов
/ 03 марта 2020

Я управляю несколькими проектами, некоторые из которых имеют зависимости друг от друга.

Каждый проект написан с использованием машинописного текста и создается с помощью веб-пакета.

Пока это мое дерево

  • root
    • tsconfig. json
    • core
      • dist
      • webpack.config. js
      • tsconfig. json (расширение root tsconfig)
      • src
        • js
          • core.ts
    • project1
      • dist
      • webpack.config. js
      • tsconfig. json (расширение root tsconfig)
      • src
        • js
          • project1.ts (имеют зависимости от core.ts или core.d.ts)

core.ts


 export class Core {
     constructor() {

    }
 }

project1.ts

 import {Core} from "../../../core/src/js/core";


 class Project1 {
     constructor() {
        let test = new Core()
    }
 }

Если я запускаю tsc из /project1, сборка будет работать как положено. Но если я использую webpack с ts-загрузчиком, я получу ошибку

Module not found: Error: Can't resolve ...

мое правило из: /project1/webpack.config.js

{
    test: /\.tsx?$/,
    use: [{loader:  'ts-loader', options: {configFile: "tsconfig.json"}}],
    exclude: /node_modules/,
},

Я безуспешно пытался добавить псевдоним

resolve: {
    alias: {
        Core : path.resolve(__dirname, "../core")

    }
},

Итак, я думаю, что веб-пакет не может перейти на root, если он запускается из дочерней папки?

Я пытаюсь получить это дерево, потому что мне бы хотелось, чтобы каждый проект мог отдельно включать в ядро ​​html

. js и пользовательский проект *. js

У меня может быть 30 разных проектов, поэтому я бы хотел, чтобы ядро. js загружалось отдельно, чтобы сохранить преимущества кэша браузера.

И сохраняйте преимущества типов в каждом проекте, просто используя типы Core или повторно используя метод из основного компонента.

Я думаю, я мог бы создать пакет с Core, а затем импортировать в каждый из них. проект, но у меня много дел для обновления каждого проекта только для небольших изменений. Также, как это работает с tsc Может быть, это может быть с веб-пакетом, так как он использует tsconfig. json.

Любая идея приветствуется.

...