Rollup-plugin-typescript2: Compilation très lente avec TS v3.4

Créé le 9 avr. 2019  ·  21Commentaires  ·  Source: ezolenko/rollup-plugin-typescript2

Que se passe-t-il et pourquoi c'est faux

Une fois que j'ai mis à niveau TS vers la v3.4.2, le temps de compilation est très lent. Avec TS v3.3 mon projet construit en ~ 20s et avec TS v3.4 cela prend ~ 5mn.

J'ai essayé avec clean: true , j'ai essayé d'ajouter typescript: require('typescript') , j'ai essayé de mettre à jour rollup et tous les plugins associés .. A chaque fois, même résultat la compilation prend beaucoup de temps .

Remarque: lorsque j'exécute tsc -p tsconfig.prod.json directement, cela prend moins de 10 secondes pour sortir le dist.

Environnement

Versions

  • dactylographié: v3.4.2
  • cumul: v1.6.0
  • rollup-plugin-typescript2: v0.19.2

rollup.config.js

  {
    input: 'src/index.ts',
    output: [
      { file: pkg.main, format: 'cjs' },
      { file: pkg.module, format: 'es' },
    ],
    plugins: [
      external({ includeDependencies: true }),
      resolve(),
      typescript({
        tsconfig: './tsconfig.prod.json',
        rollupCommonJSResolveHack: true,
      }),
      commonjs(),
      filesize(),
    ],
  }

tsconfig.json


tsconfig.json

{
  "compilerOptions": {
    "module": "esnext",
    "target": "es5",
    "jsx": "react",
    "esModuleInterop": true,
    "lib": ["dom", "es2017"],
    "moduleResolution": "node",
    "rootDir": "src",
    "forceConsistentCasingInFileNames": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "suppressImplicitAnyIndexErrors": true,
    "noUnusedLocals": false,
    "downlevelIteration": true
  },
  "include": ["src/**/*", "types/**/*"]
}


tsconfig.prod.json

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./dist",
    "noUnusedLocals": true,
    "sourceMap": true,
    "declaration": true
  },
  "exclude": ["src/doc", "**/stories.tsx", "**/test.tsx", "**/fixture.ts"]
}

package.json

    "rollup": "^1.6.0",
    "rollup-plugin-commonjs": "^9.2.1",
    "rollup-plugin-filesize": "^6.0.1",
    "rollup-plugin-node-resolve": "^4.0.1",
    "rollup-plugin-peer-deps-external": "^2.2.0",
    "rollup-plugin-typescript2": "^0.19.2",
    "typescript": "^3.4.2"

sortie du plugin avec verbosité 3


Production

rpt2: typescript version: 3.4.2
rpt2: tslib version: 1.9.3
rpt2: rollup-plugin-typescript2 version: 0.19.2
rpt2: plugin options:
{
    "tsconfig": "./tsconfig.prod.json",
    "rollupCommonJSResolveHack": true,
    "clean": true,
    "verbosity": 3,
    "typescript": "version 3.4.2",
    "check": true,
    "cacheRoot": "/Users/yannpringault/git/PayFit/components/.rpt2_cache",
    "include": [
        "*.ts+(|x)",
        "**/*.ts+(|x)"
    ],
    "exclude": [
        "*.d.ts",
        "**/*.d.ts"
    ],
    "abortOnError": true,
    "useTsconfigDeclarationDir": false,
    "tsconfigOverride": {},
    "transformers": [],
    "tsconfigDefaults": {},
    "objectHashIgnoreUnknownHack": false
}
rpt2: rollup config:
{
    "chunkGroupingSize": 5000,
    "experimentalCacheExpiry": 10,
    "inlineDynamicImports": false,
    "input": "src/index.ts",
    "perf": false,
    "plugins": [
        {
            "name": "peer-deps-external"
        },
        {
            "name": "node-resolve"
        },
        {
            "name": "rpt2"
        },
        {
            "name": "commonjs"
        },
        {
            "name": "filesize"
        }
    ]
}
rpt2: built-in options overrides: {
    "noEmitHelpers": false,
    "importHelpers": true,
    "noResolve": false,
    "noEmit": false,
    "inlineSourceMap": false,
    "outDir": "/Users/yannpringault/git/PayFit/components/.rpt2_cache/placeholder",
    "moduleResolution": 2,
    "allowNonTsExtensions": true,
    "declarationDir": "/Users/yannpringault/git/PayFit/components"
}
rpt2: parsed tsconfig: {
    "options": {
        "module": 6,
        "target": 1,
        "jsx": 2,
        "esModuleInterop": true,
        "lib": [
            "lib.dom.d.ts",
            "lib.es2017.d.ts"
        ],
        "moduleResolution": 2,
        "rootDir": "/Users/yannpringault/git/PayFit/components/src",
        "forceConsistentCasingInFileNames": true,
        "noImplicitReturns": true,
        "noImplicitThis": true,
        "noImplicitAny": true,
        "strictNullChecks": true,
        "suppressImplicitAnyIndexErrors": true,
        "noUnusedLocals": true,
        "downlevelIteration": true,
        "outDir": "/Users/yannpringault/git/PayFit/components/.rpt2_cache/placeholder",
        "sourceMap": true,
        "declaration": true,
        "configFilePath": "/Users/yannpringault/git/PayFit/components/./tsconfig.prod.json",
        "noEmitHelpers": false,
        "importHelpers": true,
        "noResolve": false,
        "noEmit": false,
        "inlineSourceMap": false,
        "allowNonTsExtensions": true,
        "declarationDir": "/Users/yannpringault/git/PayFit/components"
    },
    "fileNames": [
        "/Users/yannpringault/git/PayFit/components/src/index.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/index.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/Alert/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Alert/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Avatar/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Avatar/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/AvatarGroup/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/AvatarGroup/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Badge/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Badge/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Button/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Button/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Checkbox/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Checkbox/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/CheckboxGroup/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/CheckboxGroup/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/DatePicker/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/DatePicker/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/DatePicker/Popin/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Dropdown/MenuContext.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/Dropdown/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Dropdown/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Dropdown/DropdownItem/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Dropdown/DropdownItem/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Field/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Field/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Icon/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Icon/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Input/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Input/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Layout/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Legend/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Legend/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Loader/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Loader/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/ProgressBar/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/ProgressBar/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/ProgressCircle/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/ProgressCircle/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/RadioGroup/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/RadioGroup/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Select/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Select/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Steps/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Steps/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Body.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Cell.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Footer.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Header.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/HeaderCell.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/HeaderRow.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Limit.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Table/components/Row.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/TableGroup/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/TableGroup/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Tag/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Tag/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Text/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Toggle/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Toggle/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Tooltip/index.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/Tooltip/style.tsx",
        "/Users/yannpringault/git/PayFit/components/src/components/_helpers/colors.test.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/_helpers/colors.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/_helpers/react.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/_helpers/string.test.ts",
        "/Users/yannpringault/git/PayFit/components/src/components/_helpers/string.ts",
        "/Users/yannpringault/git/PayFit/components/src/primitives/_helpers.tsx",
        "/Users/yannpringault/git/PayFit/components/src/primitives/box.tsx",
        "/Users/yannpringault/git/PayFit/components/src/primitives/text.tsx",
        "/Users/yannpringault/git/PayFit/components/src/utils/index.ts",
        "/Users/yannpringault/git/PayFit/components/src/utils/colors/index.ts",
        "/Users/yannpringault/git/PayFit/components/src/utils/shadows/index.ts",
        "/Users/yannpringault/git/PayFit/components/src/utils/shadows/test.ts",
        "/Users/yannpringault/git/PayFit/components/src/utils/zIndex/index.ts",
        "/Users/yannpringault/git/PayFit/components/types/index.d.ts",
        "/Users/yannpringault/git/PayFit/components/types/modules.d.ts"
    ],
    "typeAcquisition": {
        "enable": false,
        "include": [],
        "exclude": []
    },
    "raw": {
        "extends": "./tsconfig.json",
        "compilerOptions": {
            "outDir": "./dist",
            "noUnusedLocals": true,
            "sourceMap": true,
            "declaration": true
        },
        "exclude": [
            "src/doc",
            "**/stories.tsx",
            "**/test.tsx",
            "**/fixture.ts"
        ],
        "compileOnSave": false,
        "include": [
            "src/**/*",
            "types/**/*"
        ]
    },
    "errors": [],
    "wildcardDirectories": {
        "/users/yannpringault/git/payfit/components/src": 1,
        "/users/yannpringault/git/payfit/components/types": 1
    },
    "compileOnSave": false,
    "configFileSpecs": {
        "includeSpecs": [
            "src/**/*",
            "types/**/*"
        ],
        "excludeSpecs": [
            "src/doc",
            "**/stories.tsx",
            "**/test.tsx",
            "**/fixture.ts"
        ],
        "validatedIncludeSpecs": [
            "src/**/*",
            "types/**/*"
        ],
        "validatedExcludeSpecs": [
            "src/doc",
            "**/stories.tsx",
            "**/test.tsx",
            "**/fixture.ts"
        ],
        "wildcardDirectories": {
            "/users/yannpringault/git/payfit/components/src": 1,
            "/users/yannpringault/git/payfit/components/types": 1
        }
    }
}
rpt2: included:
'[
    "*.ts+(|x)",
    "**/*.ts+(|x)"
]'
rpt2: excluded:
'[
    "*.d.ts",
    "**/*.d.ts"
]'

blocked help wanted

Commentaire le plus utile

@ezolenko Désolé pour la réponse tardive!

J'ai mis clean: true et mis à jour rtp2 à 0.20.1 . Voici les résultats:

TS 3.3.3333

build -> 18s
tsc   -> 14.39s

TS 3.3.4000

build -> 17.3s
tsc   -> 14.39s

TS 3.4.1

build -> 5m 25.1s
tsc   -> 21.26s

TS 3.4.3

build -> 5m 52.7s
tsc   -> 21.57s

De plus, il y a ce problème sur le repo TS qui semble lié, mais j'ai @types/styled-components épinglé à v4.1.4 donc cela ne couvre pas mon cas.

Faites-moi savoir si vous avez besoin de plus d'informations.


Pour le plaisir, j'ai également essayé la dernière version de 3.5 :

TS 3.5.0-dev.20190413

build -> 1m 23.5s
tsc   -> 18.84s

Tous les 21 commentaires

J'ai le même problème. Je suis passé de 24s à 345s en passant TS de 3.3.4000 à 3.4.3

J'ai essayé de reproduire et au début j'ai vu un ralentissement, mais en utilisant clean: true et en faisant plusieurs allers-retours entre les versions dactylographiées à plusieurs reprises, je ne vois pas la différence sur une construction propre maintenant ...

Pourriez-vous définir clean: true , mettre à jour rtp2 au dernier (0.20.1 ou master) et chronométrer une compilation plusieurs fois de suite sur ts 3.3 et ts 3.4?

@ezolenko Désolé pour la réponse tardive!

J'ai mis clean: true et mis à jour rtp2 à 0.20.1 . Voici les résultats:

TS 3.3.3333

build -> 18s
tsc   -> 14.39s

TS 3.3.4000

build -> 17.3s
tsc   -> 14.39s

TS 3.4.1

build -> 5m 25.1s
tsc   -> 21.26s

TS 3.4.3

build -> 5m 52.7s
tsc   -> 21.57s

De plus, il y a ce problème sur le repo TS qui semble lié, mais j'ai @types/styled-components épinglé à v4.1.4 donc cela ne couvre pas mon cas.

Faites-moi savoir si vous avez besoin de plus d'informations.


Pour le plaisir, j'ai également essayé la dernière version de 3.5 :

TS 3.5.0-dev.20190413

build -> 1m 23.5s
tsc   -> 18.84s

Ce problème que vous avez trouvé (https://github.com/Microsoft/TypeScript/issues/30663) et le fait que 3,5-dev soit devenu 5 fois plus rapide pour vous me fait penser qu'ils ont fait quelque chose avec l'API LanguageServer . C'est l'API que rpt2 utilise dans le cadre de la compilation et ce que les vérificateurs de type dans les IDE utilisent (c'est pourquoi WebStorm expire, etc.).

Votre projet utilise peut-être des structures de type affectées ailleurs, c'est pourquoi épingler styled-components n'aide pas. Et c'est pourquoi je ne vois pas de gros ralentissement lors de la construction de rpt2 lui-même par exemple.

Je suppose que nous attendrons la version 3.5 finale.

btw, essayez de construire avec l'option check: false

Quelqu'un a-t-il confirmé si cela est résolu avec la version 3.5?

@ tomasro27 Pas pour moi, ni avec 6 ( 3.6.0-dev.20190621 ). Semble <3,3 est toujours le plus rapide.

On dirait que 3,5 est un peu plus rapide mais ça pourrait quand même être mieux

Y a-t-il une mise à jour à ce sujet? On dirait que c'est toujours bloqué par TS?

Ouais, je ne pense pas qu'on puisse faire quoi que ce soit à partir de cette fin. Tout le monde est invité à essayer :)

+1
3.5.3 est également très lent pour nous

check: false fonctionne très bien.

Mais le problème est qu'il ne donne aucune erreur de compilation (si vous utilisez vscode, cela provoquera les erreurs 😄).

Au moins je peux faire check: false quand je travaille sur CSS (en JS). 👍

@ezolenko savez-vous quel appel d'API dactylographié exact provoque le ralentissement de la compilation? :)

@ZainlessBrombie non, tout ce que je sais est dans ce fil. Le problème de typographie qui est lié est probablement lié, mais pas à cause directe (car ils disent qu'il devrait être corrigé dans 3.5+, et apparemment ce n'est pas le cas).

Si vous avez des builds lents dans votre projet, vérifiez si ts 3.3 est réellement plus rapide si possible, peut-être que le problème n'est pas dactylographié, mais autre chose.

D'accord merci. Si j'y arrive, cela pourrait être un mur contre lequel je suis prêt à me cogner la tête pour ainsi dire :)

Modifier: ce problème se produit uniquement pour les fichiers qui importent des composants stylés comme il semble
De plus, la documentation Typescript est terrible

Le profilage dactylographié révèle que la source du problème réside dans ces unions extrêmement importantes que possèdent les composants stylisés. Le seul endroit pour résoudre ce problème est dactylographié, à moins qu'il n'y ait un moyen d'obtenir la résolution du module de cache (ce qu'il devrait).

En fait, je n'utilise pas le cache de résolution de module dans l'appel nodeModuleNameResolver ici: https://github.com/ezolenko/rollup-plugin-typescript2/blob/b7c7389dcdf168715669520128ca656d6e940111/src/index.ts#L148

Je ne sais pas si cela oblige à utiliser celui par défaut ou pas du tout.

Oui j'ai vu ça TODO :)
Malheureusement, le débogage du cache de résolution du module lorsqu'il est utilisé montre qu'il met en cache les composants rebassés mais pas stylisés pour une raison quelconque. Il passe un cache interne pour ceux-là ...

Je suis actuellement en train de migrer ma base de code C # de ma bibliothèque vers TypeScript et j'utilise Rollup pour le regroupement. (J'avais une chaîne d'outils C #> Haxe> JavaScript personnalisée auparavant). Malheureusement, je souffre également beaucoup de la vitesse de compilation de ma nouvelle base de code TypeScript, ce qui rend le développement assez difficile.

Si possible, je suis heureux de fournir des rapports de profilage s'il est possible de les générer.

Voici quelques aperçus de mon projet:

Habituellement, j'utilise ttypescript pour effectuer une transformation AST.
Lignes de code : ~ 50000

rollup -c rollup.config.ts : ~ 9-10sec
rollup -c rollup.config.ts -w (compilation initiale) : ~ 9-10sec
rollup -c rollup.config.ts -w (ajout d'une alerte dans 1 fichier TS) : ~ 20sec
rollup -c rollup.config.ts -w (suppression de l'alerte à nouveau) : ~ 20sec

tsc --version : 3.8.3
tsc --project tsconfig.json : ~ 6-7sec
tsc --project tsconfig.json -w (compilation initiale) : ~ 6-7sec
tsc --project tsconfig.json -w (ajout d'une alerte dans 1 fichier TS) : ~ 0.1-0.2sec
tsc --project tsconfig.json -w (suppression de l'alerte à nouveau) : ~ 0,1-0,2sec

ttsc --version : 3.8.3
ttsc --project tsconfig.json : ~ 7-8sec
ttsc --project tsconfig.json -w (compilation initiale) : ~ 6-7sec
ttsc --project tsconfig.json -w (ajout d'une alerte dans 1 fichier TS) : ~ 0,1-0,2sec
ttsc --project tsconfig.json -w (suppression de l'alerte à nouveau) : ~ 0,1-0,2sec

Les builds incrémentiels sont actifs dans tsconfig.

Il me semble assez inhabituel qu'une construction incrémentielle / de surveillance prenne deux fois plus qu'une construction complète.

Les choses semblent devenir folles dans mon environnement quand il s'agit de tester. J'ai branché le rollup avec le karma et ce plugin dactylographié. Comme vous le savez peut-être: chaque suite de tests a son propre bundle, ce qui signifie que les nombres ci-dessus s'accumulent. La mémoire augmente à> 2 Go au fil du temps; même après quelques minutes, le test de fonctionnement ne démarre pas réellement. Cela se produit sur chaque npm run test .

Une fois qu'il atteint la zone "Génération de bundle pour ..." sur la génération de test, je vois des nombres élevés ridicules:
File01.test.ts contenant 1 test simple d'une classe d'analyseur prend 15secs
File02.test.ts contenant 11 tests d'analyse XML nécessite 2,5 minutes
File03.test.ts ne s'est même pas terminé après 5 minutes.

Je n'ai aucune idée d'où ce problème pourrait être causé et s'il est vraiment dû au module dactylographié de rollup, mais cela semble être le problème le plus probable auquel je suis lié.

Comme mon dépôt est assez volumineux et compliqué, je n'ai pas partagé plus de détails sur les configs. Si quelqu'un peut me guider sur la façon de les collecter, je suis heureux de fournir des journaux / résultats de profilage, etc. J'essaierai de configurer un nouveau référentiel indépendant simple reflétant la situation globale de mon projet, mais je ne peux pas promettre que le problème persistera.

@ Danielku15 Votre principal problème est que vous migrez depuis C # et non depuis C ++ :)

Ce plugin n'utilise pas explicitement les propres compilations incrémentielles de typescript (cela n'existait pas quand il a démarré).

Vous pouvez essayer @rollup/plugin-typescript (https://github.com/rollup/plugins/tree/master/packages/typescript), ils utilisent une approche différente je pense et pourraient vous donner des chiffres différents.

Une autre option est de faire une compilation dactylographiée hors de la chaîne de rollup (comme une étape de pré-construction dans npm ou quelque chose) et de nourrir les js résultants à la place. Watch build serait intéressant, même si je pense que vous pouvez démarrer tsc et rollup en mode watch et si le projet est configuré correctement, il fonctionnera simplement.

Votre problème principal est que vous migrez depuis C # et non depuis C ++

Hors sujet: Je ne suis pas sûr de vouloir migrer un framework / bibliothèque C ++ vers TypeScript. En fonction de l'utilisation de macros et de modèles (que les développeurs C ++ ont tendance à aimer), les choses peuvent devenir folles pendant la migration migration Heureusement, ma base de code C # a toujours été adaptée à un style qui permet la compilation croisée vers d'autres langages, le résultat est donc tout à fait acceptable à partir d'une structure de code . J'ai juste besoin de comprendre un peu mieux comment organiser les modules pour réduire certains frais généraux. 😊

Ce plugin n'utilise pas explicitement les propres compilations incrémentielles de typescript (cela n'existait pas quand il a démarré).

Ceci est intéressant, est-ce que ce plugin a sa propre stratégie de construction "incrémentale" personnalisée? Cela pourrait expliquer pourquoi une version entièrement nettoyée peut prendre plus de temps qu'un changement de source lors de l'utilisation de watch. La compilation dactylographiée est plus ou moins stable, il est dommage que ce plugin ne puisse pas encore utiliser les mises à jour incrémentielles, mais je pense que le temps passé dans le compilateur de script de type est stable. Mais le temps passé dans le rollup semble varier. Seulement cela m'explique qu'une construction propre est plus rapide qu'un changement de code avec le mode montre.

Vous pouvez essayer @ rollup / plugin-typescript ...

Merci pour l'indice, je vais essayer de voir si cela s'améliore.

Une autre option est de faire une compilation dactylographiée hors de la chaîne de rollup

J'avais une telle configuration au tout début mais je l'ai abandonnée à mi-chemin pour avoir des builds "watch" pendant le développement. Je vais lui donner à nouveau une chance si je peux brancher un pipeline avec les deux outils "regardant" indépendamment. 👍

Mise à jour 1: J'ai pu configurer tout mon environnement de compilation et de test maintenant en invoquant tsc enchaîné avec rollup. J'avais besoin de créer mon propre plugin de rollup pour résoudre correctement les chemins tsconfig, mais après cela, cela fonctionnait bien.

Compilation propre: 9secs, compilation Watch: 0,5-1secs et des tests via Karma + Rollup sont également en cours d'exécution (la compilation prend un peu plus de temps car elle génère un bundle pour chaque suite de tests).

Cette page vous a été utile?
0 / 5 - 0 notes