Typescript - Front - я хочу, чтобы статический импорт был объединен, но динамический импорт не объединен - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу объединить некоторые файлы (файлы со статическим импортом), но некоторые не нужно объединять (файлы с динамическим импортом).

Как я могу сказать это машинописи?

Демонстрация сделана с 4 файлами, одним индексом с функцией main () и 3 классами A, B и C.

Текущая конфигурация машинописного текста:

{
  "compilerOptions": {
    "allowJs": true,
    "target": "es2017",
    "module": "esnext",
    "outDir": "lib",
    "sourceMap": false,
    "strict": true,
    "noImplicitAny": false,
    "removeComments": true,
    "lib": [
      "esnext"
    ],
  },
  "compileOnSave": true,
  "include": [
    "src/**/*.ts",
    "src/**/*.js"
  ],
  "exclude": [
    "node_modules",
    "old"
  ]
}

src / index.ts

'use strict';
//@ts-check

import { C } from './c/c'; // I want this one to be merged in index

export const main = async () => {
  const c = new C();
  c.log();
}

main();

src / c.ts

'use strict';
//@ts-check

import { B } from '../b/b'; // I want this one to be merged in c, so in index

export class C {

  async log() {
    const A = await import('/' + 'a.js');
    const a = new A();
    a.log();
    const b = new B();
    b.log();
  }
}

src / b.ts

'use strict';
//@ts-check

export class B {

  async log() {
    console.log('b');
  }
}

src / a.ts

'use strict';
//@ts-check

export class A {

  log() {
    console.log('a');
  }
}

В настоящее время я получаю:

- lib/a/a.js
- lib/b/b.js
- lib/c/c.js
- lib/index.js

Но я бы хотел:

- lib/a.js // Apart from index, because it is dynamically imported
- lib/index.js

Любая идея?

Есть ли декоратор, который скажет машинописному тексту слить c и b в индекс, а затем поместить в сторону индекс?

По возможности, мне не нужно добавлять какой-либо слой сборки (такой веб-пакет), и оставайтесь только с машинописью.

1 Ответ

0 голосов
/ 23 сентября 2018

Я совершенно уверен, что нет способа сделать это только с помощью компилятора TypeScript.(Вы можете вручную объединить группы файлов, используя ссылки на проекты и outFile, но вам все равно потребуется время выполнения модуля AMD или SystemJS.) Вам нужно будет использовать отдельный инструмент, такой как Webpack.IMO так и должно быть, но важно мнение команды TypeScript.

...