Rollup-plugin-typescript2: Compilação muito lenta com TS v3.4

Criado em 9 abr. 2019  ·  21Comentários  ·  Fonte: ezolenko/rollup-plugin-typescript2

O que acontece e porque está errado

Depois de atualizar o TS para a v3.4.2, o tempo de compilação é muito lento. Com o TS v3.3 meu projeto foi construído em ~ 20s e com o TS v3.4 leva cerca de 5 minutos.

Tentei com clean: true , tentei adicionar typescript: require('typescript') , tentei atualizar rollup e todos os plug-ins relacionados. Cada vez, o mesmo resultado a compilação leva muito tempo .

Nota: quando executo tsc -p tsconfig.prod.json diretamente, leva menos de 10 segundos para gerar o dist.

Meio Ambiente

Versões

  • datilografado: v3.4.2
  • rollup: 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"

saída do plugin com detalhamento 3


Resultado

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

Comentários muito úteis

@ezolenko Desculpe pela resposta tardia!

Coloquei clean: true e atualizei rtp2 para 0.20.1 . Aqui estão os resultados:

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

Além disso, há esse problema no repositório TS que parece relacionado, mas tenho @types/styled-components fixado em v4.1.4 portanto, não cobre meu caso.

Deixe-me saber se você precisar de mais informações.


Para me divertir, também experimentei a versão mais recente de 3.5 :

TS 3.5.0-dev.20190413

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

Todos 21 comentários

Estou tendo o mesmo problema. Foi de 24s para 345s ao bater TS de 3.3.4000 para 3.4.3

Tentei reproduzir e a princípio vi uma lentidão, mas usando clean: true e indo e voltando entre as versões datilografadas várias vezes, não vejo diferença na compilação limpa agora ...

Você poderia definir clean: true , atualizar rtp2 para o mais recente (0.20.1 ou master) e cronometrar uma compilação várias vezes consecutivas nos ts 3.3 e ts 3.4?

@ezolenko Desculpe pela resposta tardia!

Coloquei clean: true e atualizei rtp2 para 0.20.1 . Aqui estão os resultados:

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

Além disso, há esse problema no repositório TS que parece relacionado, mas tenho @types/styled-components fixado em v4.1.4 portanto, não cobre meu caso.

Deixe-me saber se você precisar de mais informações.


Para me divertir, também experimentei a versão mais recente de 3.5 :

TS 3.5.0-dev.20190413

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

Esse problema que você encontrou (https://github.com/Microsoft/TypeScript/issues/30663) e o fato de 3.5-dev ter se tornado 5 vezes mais rápido para você me faz pensar que eles fizeram algo com LanguageServer API. Esta é a API que o rpt2 usa como parte da compilação e o que os verificadores de tipos em IDEs estão usando (é por isso que o WebStorm atinge o tempo limite, etc.).

Seu projeto pode estar usando estruturas de tipo afetadas em outro lugar, é por isso que fixar styled-components não ajuda. E é por isso que não vejo uma grande desaceleração ao construir o próprio rpt2, por exemplo.

Acho que vamos esperar pelo lançamento final do 3.5.

a propósito, tente construir com a opção check: false

Alguém confirmou se isso foi corrigido na versão 3.5?

@ tomasro27 Não para mim, nem com 6 ( 3.6.0-dev.20190621 ). Parece que <3.3 ainda é o mais rápido.

Parece que 3.5 é um pouco mais rápido, mas ainda poderia ser melhor

Existe alguma atualização sobre isso? Parece que ainda está bloqueado pelo TS?

Sim, acho que nada pode ser feito a partir deste fim. Qualquer pessoa é bem-vinda para tentar :)

+1
3.5.3 também é muito lento para nós

check: false está funcionando muito bem.

Mas o problema é que não dá nenhum erro de compilação (se você usar o vscode, ele vai mostrar os erros 😄).

Posso fazer pelo menos check: false quando estou trabalhando em CSS (em JS). 👍

@ezolenko , você sabe qual chamada exata de API de compilação fique mais lenta? :)

@ZilotBrombie não, tudo o que sei está neste tópico. O problema de texto datilografado que está vinculado provavelmente está relacionado, mas não é a causa direta (porque eles dizem que deveria ser corrigido no 3.5+, e aparentemente não é).

Se você tiver compilações lentas em seu projeto, verifique se ts 3.3 é realmente mais rápido se possível, talvez o problema não seja a digitação, mas outra coisa.

Tudo bem, obrigado. Se eu conseguir, isso pode ser uma parede que estou disposto a bater minha cabeça contra, por assim dizer :)

Editar: Este problema ocorre apenas para arquivos que importam componentes estilizados como parece
Além disso, a documentação do Typescript é terrível

A composição do perfil revela que a origem do problema são essas uniões extremamente grandes que os componentes estilizados possuem. O único lugar para corrigir isso é o texto digitado, a menos que haja uma maneira de obter o texto digitado para a resolução do módulo de cache (o que deveria ser).

Na verdade, não estou usando o cache de resolução de módulo na chamada nodeModuleNameResolver aqui: https://github.com/ezolenko/rollup-plugin-typescript2/blob/b7c7389dcdf168715669520128ca656d6e940111/src/index.ts#L148

Não tenho certeza se isso faz com que ts use um padrão ou não use nenhum.

Sim, eu vi aquele TODO :)
Infelizmente, a depuração do cache de resolução do módulo quando usado mostra que ele armazena em cache o rebass, mas não os componentes estilizados por algum motivo. Ele passa um cache interno para aqueles ...

Atualmente, estou no processo de migração da minha base de código C # da minha biblioteca para o TypeScript e estou usando o Rollup para empacotamento. (Eu tinha um conjunto de ferramentas C #> Haxe> JavaScript personalizado antes). Infelizmente, estou sofrendo muito com a velocidade de compilação de minha nova base de código TypeScript, o que torna o desenvolvimento bastante difícil.

Se possível, fico feliz em fornecer alguns relatórios de perfil se for possível gerá-los.

Aqui estão alguns insights do meu projeto:

Normalmente, estou usando ttypescript para fazer alguma transformação AST.
Linhas de código : ~ 50000

rollup -c rollup.config.ts : ~ 9-10sec
rollup -c rollup.config.ts -w (compilação inicial) : ~ 9-10seg
rollup -c rollup.config.ts -w (adicionando 1 alerta em 1 arquivo TS) : ~ 20seg
rollup -c rollup.config.ts -w (removendo alerta novamente) : ~ 20seg

tsc - versão : 3.8.3
tsc --project tsconfig.json : ~ 6-7sec
tsc --project tsconfig.json -w (compilação inicial) : ~ 6-7sec
tsc --project tsconfig.json -w (adicionando 1 alerta em 1 arquivo TS) : ~ 0.1-0.2sec
tsc --project tsconfig.json -w (removendo alerta novamente) : ~ 0.1-0.2sec

ttsc - versão : 3.8.3
ttsc --project tsconfig.json : ~ 7-8sec
ttsc --project tsconfig.json -w (compilação inicial) : ~ 6-7sec
ttsc --project tsconfig.json -w (adicionando 1 alerta em 1 arquivo TS) : ~ 0.1-0.2seg
ttsc --project tsconfig.json -w (removendo alerta novamente) : ~ 0.1-0.2sec

As compilações incrementais estão ativas no tsconfig.

Parece-me bastante incomum que uma compilação incremental / relógio leve o dobro do que uma compilação completa.

As coisas parecem enlouquecer no meu ambiente quando se trata de testes. Eu conectei rollup com karma e este plugin de texto digitado. Como você deve saber: cada suíte de teste recebe seu próprio pacote, o que significa que os números acima se acumulam. A memória cresce para> 2 GB com o tempo; mesmo após alguns minutos, a execução do teste não inicia de fato. Isso acontece em cada npm run test .

Quando atinge a área "Gerando pacote para ..." na geração de teste, vejo números ridículos:
File01.test.ts contendo 1 teste simples de uma classe de analisador leva 15 segundos
File02.test.ts contendo 11 testes de análise XML precisa de 2,5 minutos
File03.test.ts nem mesmo foi concluído após 5 minutos.

Não tenho ideia de onde esse problema pode ser causado e se é realmente devido ao módulo de rollup de texto digitado, mas esse parece ser o problema mais provável com o qual estou relacionado.

Como meu repo é muito grande e complicado, não compartilhei mais detalhes sobre as configurações. Se alguém puder me orientar como coletá-los, ficarei feliz em fornecer logs / resultados de criação de perfil, etc. Tentarei configurar um novo repositório independente simples refletindo a situação geral do projeto, mas não posso prometer que o problema persistirá.

@ Danielku15 Seu principal problema é que você está migrando de C # e não de C ++ :)

Este plugin não está usando explicitamente as próprias compilações incrementais do typescript (isso não existia quando foi iniciado).

Você poderia tentar @rollup/plugin-typescript (https://github.com/rollup/plugins/tree/master/packages/typescript), eles usam uma abordagem diferente, eu acho, e podem fornecer números diferentes.

Outra opção é fazer a compilação do texto digitado fora da cadeia de rollup (como uma etapa de pré-construção em npm ou algo assim) e alimentar o js resultante para rollup. Assistir a compilação seria interessante, embora eu ache que você pode iniciar tsc e rollup no modo de observação e se o projeto estiver configurado corretamente, ele simplesmente funcionará.

Seu principal problema é que você está migrando de C # e não de C ++

Off-Topic: Não tenho certeza se gostaria de migrar uma estrutura / biblioteca C ++ para o TypeScript. Dependendo do uso de macros e modelos (que os desenvolvedores de C ++ tendem a adorar), as coisas podem enlouquecer durante a migração 😅 Felizmente, minha base de código C # sempre foi adaptada para um estilo que permite a compilação cruzada para outras linguagens, então o resultado é bastante aceitável em uma estrutura de código . Só preciso descobrir um pouco melhor como organizar os módulos para reduzir alguma sobrecarga. 😊

Este plugin não está usando explicitamente as próprias compilações incrementais do typescript (isso não existia quando foi iniciado).

Isso é interessante, este plugin tem alguma estratégia de construção "incremental" personalizada? Isso pode explicar por que uma compilação totalmente limpa pode demorar mais do que uma mudança de fonte ao usar o relógio. A compilação do script de tipo é mais ou menos estável, é uma pena que este plugin ainda não possa utilizar as atualizações incrementais, mas acho que o tempo gasto no compilador do script de tipo é estável. Mas o tempo gasto no rollup parece variar. Só isso me explica que uma construção limpa é mais rápida do que uma mudança de código com modo de observação.

Você pode tentar @ rollup / plugin-typescript ...

Obrigado pela dica, vou tentar para ver se melhora.

Outra opção é fazer a compilação do texto digitado fora da cadeia de rollup

Eu tinha essa configuração no início, mas deixei-a cair no meio do caminho para "assistir" as compilações durante o desenvolvimento. Vou tentar novamente se conseguir conectar um pipeline com as duas ferramentas "observando" independentemente. 👍

Atualização 1: consegui configurar todo o meu ambiente de compilação e teste agora com a chamada de tsc encadeada com rollup. Eu precisava fazer meu próprio plugin de rollup para resolver os caminhos tsconfig corretamente, mas depois disso ele estava funcionando bem.

Compilação limpa: 9segs, Watch compilation: 0.5-1secs e testes via Karma + Rollup também estão rodando (a compilação leva um pouco mais de tempo, pois gera um pacote para cada suíte de teste).

Esta página foi útil?
0 / 5 - 0 avaliações