6.3.1
4.0.3
2.0.0
Isso é específico para projetos de texto datilografado com arquivos de origem importando protractor/globals
. Especificamente, ao importar protractor/globals
, porque o lançamento do NPM inclui o arquivo globals.ts
vez de um arquivo de definição correspondente ( globals.d.ts
), o compilador de texto digitado computará a raiz de fonte comum do projeto de texto digitado que está consumindo para o caminho comum entre a dependência do Transferidor global.ts
(provavelmente node_modules/protractor
) e onde quer que as fontes do projeto de consumo estejam contidas (por exemplo, src/test/**/*.ts
). Isso faz com que o compilador produza os arquivos de origem com todos os diretórios pais incluídos.
Observe que este é puramente um problema de onde o compilador de texto digitado produz os arquivos compilados; a compilação ocorre bem e o transferidor é consumido (de forma impressionante) conforme o esperado.
Para demonstrar melhor o cenário que estou descrevendo mal, consulte este projeto de exemplo .
Suspeito que resolver isso aqui seria uma combinação de duas coisas:
globals.ts
for compilado; eglobals.ts
do pacote de lançamento do NPM, deixando apenas o arquivo javascript compilado e o arquivo de definição correspondente.Se isso estiver certo, ficarei feliz em enviar uma solicitação pull para lidar com a primeira parte da solução. Se o processo de lançamento para o NPM ainda seguir o documento de lançamento do projeto, eu também ficaria feliz em atualizá-lo com uma etapa para remover o arquivo globals.ts
, embora isso possa ser melhor manipulado por alguém que realmente realiza lançamentos.
Embora eu tenha refletido sobre isso e acredite que o compilador Typescript está se comportando conforme o esperado, deixe-me saber se você discorda, já que ainda estou começando a usar o Typescript.
(editar: atualizar o formato para refletir o modelo de bug)
@tmeneau Obrigado por este problema: Eu realmente gostei do exemplo do github ... 👍 👍 👍
Portanto, este é um efeito colateral ao usar outDir. Por exemplo, se outDir
for definido como output
, além dos arquivos transpilados, output/node_modules/protractor/globals.js
também serão transpilados. Originalmente, incluí o arquivo globals.ts, pois (na época), após alguns experimentos, não era possível importar um tipo de arquivo sem ter o arquivo TypeScript.
Para analisar as propostas:
exampleTypescript
isso parece funcionar. Estou atualizando o .npmignore para não publicar esse arquivo e atualizar o Protractor para TypeScript 2. Consulte: https://github.com/angular/protractor/pull/3485@cnishina que bom que o exemplo ajudou! Obrigado pela resposta rápida, isso parece ótimo, exceto por uma coisa sobre a qual posso estar confuso: embora sua alteração remova o arquivo global.ts
do pacote NPM, não terá uma declaração globals.d.ts
tornar a importação protractor/globals
invisível para o compilador de texto digitado para consumir projetos?
Portanto, acho que a primeira parte da minha proposta não era remover o globals.js
compilado em favor da declaração globals.d.ts
, mas ter ambos para que o pacote NPM contivesse:
apenas sem o arquivo de origem globals.ts
.
Eu acredito que isso pode ser alcançado usando tsc com o sinalizador --declaration
ao compilar o arquivo global.ts
. Por exemplo, alterar a tarefa tsc: globals gulp como abaixo deve resolver, embora eu tenha percebido que também há tsc
e tsc:w
tarefas no package.json que também podem precisar ser atualizadas desde que não modifique compilações não globais adversamente:
gulp.task('tsc:globals', function(done) {
runSpawn(done, 'node', ['node_modules/typescript/bin/tsc', '--declaration', 'globals.ts'],
'ignore');
});
Avise-me se estiver faltando alguma coisa e obrigado novamente pela solução rápida! A propósito, usar Protractor com Typescript é uma explosão séria!
Sim ... 👍 globals.d.ts
ainda deve estar lá para que protractor/globals
import funcione. Eu atualizei o PR. Obrigado!
Comentários muito úteis
@cnishina que bom que o exemplo ajudou! Obrigado pela resposta rápida, isso parece ótimo, exceto por uma coisa sobre a qual posso estar confuso: embora sua alteração remova o arquivo
global.ts
do pacote NPM, não terá uma declaraçãoglobals.d.ts
tornar a importaçãoprotractor/globals
invisível para o compilador de texto digitado para consumir projetos?Portanto, acho que a primeira parte da minha proposta não era remover o
globals.js
compilado em favor da declaraçãoglobals.d.ts
, mas ter ambos para que o pacote NPM contivesse:apenas sem o arquivo de origem
globals.ts
.Eu acredito que isso pode ser alcançado usando tsc com o sinalizador
--declaration
ao compilar o arquivoglobal.ts
. Por exemplo, alterar a tarefa tsc: globals gulp como abaixo deve resolver, embora eu tenha percebido que também hátsc
etsc:w
tarefas no package.json que também podem precisar ser atualizadas desde que não modifique compilações não globais adversamente:Avise-me se estiver faltando alguma coisa e obrigado novamente pela solução rápida! A propósito, usar Protractor com Typescript é uma explosão séria!