Связка Typescript с Rollup и rollup-plugin-typescript2 испортилась - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь извлечь небольшую часть monorepo в библиотеку веб-клиента и сталкиваюсь с некоторыми неожиданными препятствиями, здесь. Итак, довольно простая конфигурация свертки, например:

import resolve from "rollup-plugin-node-resolve";
import typescript from "rollup-plugin-typescript2";
import sourceMaps from 'rollup-plugin-sourcemaps';

export default {
    input: "../main.ts",
    output: {
        file: './bundle/rollup-bundle.js',
        format: 'iife',
        name: 'WebClient',
        sourcemap: true
    },
    plugins: [
        typescript(),
        resolve({browser: true, mainFields: ['module']}),
        sourceMaps(),
    ]
};

Производит:

../main.ts → ./bundle/rollup-bundle.js...
[!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
..\main.ts (3:32)
1: [...]
2:
3: export const createClient = (url: string) => new ClientImpl([...]);
                                   ^
Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)

Похоже, rollup-plugin-typescript2 не выполняет свою работу по переносу машинописного текста, и это просто кажется слишком основа c, чтобы не работать. Я в замешательстве!

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Похоже, что rollup возможно построен с мыслью, что он всегда будет находиться в проекте root. И как только я попытался поместить конструктор веб-клиента как отдельную app в его отдельную папку с его выделенными tsconfig и rollup.config, все это сошло с ума без четких указаний на то, почему это происходит. Единственным очевидным признаком является то, что rollup-plugin-typescript2 не способен переносить (даже не пытается) любые файлы * .ts, расположенные в более высоких папках, и потребовалось немало времени, чтобы это выяснить.

0 голосов
/ 17 февраля 2020

Это, вероятно, вызвано тем, что typescript2 и node-resolve вызываются в неправильном порядке:

[@ rollup / plugin-node-resol] Должно быть до rollup-plugin-typescript2 в список плагинов, особенно когда используется опция browser: true

(из rollup-plugin-typescript2 документации )


Обновление

Основной проблемой оказалось расположение некоторых исходных файлов в более высоких папках относительно tsconfig root. По умолчанию tsconfig исключил их из компиляции:

Если «files» и «include» оба не указаны, компилятор по умолчанию включает в себя весь TypeScript (.ts, .d.ts и .tsx ) файлы в , содержащие каталог и подкаталоги

( tsconfig docs )

...