Vscode-ng-language-service: texto datilografado 2.2.1

Criado em 1 mar. 2017  ·  32Comentários  ·  Fonte: angular/vscode-ng-language-service

    "@angular/cli": "1.0.0-rc.0",
    "@angular/compiler-cli": ">=4.0.0-beta <5.0.0",
    "@angular/language-service": ">=4.0.0-beta <5.0.0",
    "typescript": "~2.2.1"

vscode 1.9.1

é possível executá-lo com essas versões?

feature

Comentários muito úteis

@fxck Sim. 2.3 é o lançamento que estávamos esperando, mas ainda não tem tudo o que precisamos. Estou coordenando com a Microsoft, as equipes TypeScript e VSCode, em relação a isso. As mudanças necessárias devem chegar nas próximas semanas.

Meu lado foi implementado e está no mestre Angular. Eu tenho um PR para as mudanças necessárias para a saída do TypeScript (provisoriamente prevista para 2.3.2). A equipe do VSCode está trabalhando nas alterações necessárias no plug-in TypeScript e a maioria está atualmente no mestre do VSCode. Precisamos de uma alteração subsequente para lidar com arquivos html externos, mas isso também deve chegar nas próximas semanas.

Assim que tudo isso se juntar, atualizarei meu plugin para usar a nova arquitetura de plugin, que resolverá a maioria dos problemas que as pessoas estão tendo com o plugin, bem como posicionar o código para permitir mais recursos, como renomear referências em modelos.

Todos 32 comentários

Se você quer se antecipar:
npm install typescript<strong i="6">@next</strong> --save-dev

Em seguida, no seu tsconfig.json :

{
  "compilerOptions": {
    "plugins": [{ "name": "@angular/language-service" }]
  }
}

Por fim, escolha esta última versão do TypeScript (2.3) no VS Code (no canto inferior direito) e reinicie conforme sugerido.

Tá da. Não há necessidade da extensão, e será incrivelmente mais rápido, pois não executa um processo de datilografia duplicado.

Como posso testar?
Devo ir do template html para a minha definição de variável via F12? isso não funciona.

Você verá informações sobre seus componentes, autocompletar para vinculação de propriedades, etc. Mas estou trabalhando com templates embutidos, ainda não testei com templates externos.

sim funciona com modelos embutidos, mas não com modelos externos

Meu plano é usar a nova arquitetura de plugins em 2.3 por padrão. Este plug-in só seria necessário para obter conclusões de referências de modelos externos.

Isso deve coincidir na época do lançamento oficial 2.3.

A primeira versão oficial deste plugin (0.1.1) funciona apenas com TypeScript 2.1 e não com 2.2.

Eu acho que agora deve ser um bug para corrigir em breve em vez de um aprimoramento porque o angular/cli instala o TS 2.2 por padrão, então o plugin não é compatível por padrão para muitos projetos angulares.

Estarei trabalhando nisso na próxima semana. Infelizmente, muitas das APIs internas do TypeScript mudaram significativamente com a versão 2.2, então a atualização não é simples.

@chuckjaz alguma novidade sobre isso? obrigada

você só percebe o quão grande é este plugin quando você não pode usá-lo

@fxck Estou trabalhando nisso esta semana. Encontrei-me com a equipe do TypeScript na semana passada e criamos uma estratégia de longo prazo melhor que tem menos probabilidade de ser quebrada à medida que a equipe do TypeScript está fazendo alterações. Estou implementando minha parte esta semana.

@chuckjaz isso significa que terá que esperar por uma nova versão do texto datilografado? Maior? Menor?

@fxck Sim. 2.3 é o lançamento que estávamos esperando, mas ainda não tem tudo o que precisamos. Estou coordenando com a Microsoft, as equipes TypeScript e VSCode, em relação a isso. As mudanças necessárias devem chegar nas próximas semanas.

Meu lado foi implementado e está no mestre Angular. Eu tenho um PR para as mudanças necessárias para a saída do TypeScript (provisoriamente prevista para 2.3.2). A equipe do VSCode está trabalhando nas alterações necessárias no plug-in TypeScript e a maioria está atualmente no mestre do VSCode. Precisamos de uma alteração subsequente para lidar com arquivos html externos, mas isso também deve chegar nas próximas semanas.

Assim que tudo isso se juntar, atualizarei meu plugin para usar a nova arquitetura de plugin, que resolverá a maioria dos problemas que as pessoas estão tendo com o plugin, bem como posicionar o código para permitir mais recursos, como renomear referências em modelos.

Precisamos de uma alteração subsequente para lidar com html externo

@chuckjaz você quer dizer que a equipe do TypeScript deve gerenciar Plugin#getExternalFiles() https://github.com/Microsoft/TypeScript/blob/2150a7796b0dfe83c5286755410e0fd1646ed86c/src/server/project.ts#L270 Parece que você o implementou https: //github.com/angular/angular/blob/master/packages/language-service/src/ts_plugin.ts#L17 mas o TypeScript não o usa?

Posto esta pergunta porque tento integrar @angular/language-service dentro do Eclipse com Plugins TypeScript. Funciona muito bem com @Component/template dentro de um arquivo TypeScript, mas não quando o template é declarado no arquivo html.

Obrigado pela sua resposta.

@angelozerr Correto. Tenho um PR pendente para o TypeScript que o habilita e estamos trabalhando nos detalhes de aterrissagem. Uma vez que é desembarcado, o serviço TypeScript lidará com a solicitação de modelos externos.

No entanto, é um exercício para o integrador como fazer com que o editor direcione as solicitações de arquivos html para o TypeScript.

Os planos atuais para o VSCode são para que as extensões do TypeScript possam adicionar tipos de arquivo que devem ser tratados pelo serviço TypeScript. Este plugin então se tornaria um plugin VSCode TypeScript que adicionaria html arquivos a essa lista junto com o registro de @angular/language-service como uma extensão global do TypeScript.

Muito obrigado pela sua ótima explicação.

Os planos atuais para o VSCode são para que as extensões do TypeScript possam adicionar tipos de arquivo que devem ser tratados pelo serviço TypeScript.

Você quer dizer, quando um arquivo html é aberto, ele deve consumir tsserver commands como open , change para arquivo HTML como para arquivo TypeScript?

com o registro @angular/language-service como uma extensão global do TypeScript.

Eu vi que agora o TypeScript fornece o plugin global , mas não entendo como ele funciona. No momento eu declaro plugins TypeScript como seu @angular/language-service e meu tslint-language-service na seção plugins de tsconfig.json e requer ter @angular/language-service no node_modules do projeto.

Plugins globais dá a capacidade de registrar um plugin sem instalar em seu projeto, é isso?

Você quer dizer, quando um arquivo html é aberto, ele deve consumir comandos tsserver como abrir, alterar para arquivo HTML como para arquivo TypeScript?

sim.

Plugins globais dá a capacidade de registrar um plugin sem instalar em seu projeto, é isso?

sim. Os plugins globais são carregados além dos listados no arquivo de configuração.

Muito obrigado por ter tido tempo para me dar uma resposta.

Vou acompanhar o trabalho do TypeScript para testar isso, estou muito entusiasmado com o seu trabalho e integrá-lo dentro do Eclipse :)

Oi @chuckjaz O Typescript 2.3.3 foi lançado hoje. Seus PRs estão presentes nesta versão? Você será capaz de terminar essa integração no TsServer?

Obrigado pelo excelente trabalho :)

Não é. Existem alguns problemas que encontramos no design bastante tarde e eles ainda precisam solucioná-los completamente.

Então, foi mesclado agora. Espero que venha com o lançamento menor do ninho.

@chuckjaz Estou tentando consumir o comando "definition" tsserver dentro do Eclipse a partir do modelo angular HTML app.component.html :

<h1>
  {{title}}
</h1>

para recuperar a definição da propriedade title declarada em um arquivo TypeScript

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app works!';
}

com :

No meu editor de HTML eu consumo os mesmos comandos que o tsserver como abrir, alterar, etc, mas não funciona. Quando você tiver tempo, por favor me diga qual tsserver commad, um editor deve consumir (ex: passar um skriptKing 'html' específico quando um editor HTML é aberto?) Obrigado!

Não sei o que pode estar errado, pois este é um dos testes que executo para validar o funcionamento do serviço de idiomas.

Uma coisa que você pode tentar é abrir app.component.ts primeiro e ver se isso ajuda.

O que getExternalFiles faz é permitir que tsserver consulte um plugin para calcular uma lista de arquivos externos a serem incluídos em um projeto associado a um arquivo tsconfig.json específico. Se o arquivo .html não estiver associado a um projeto angular, o arquivo .html será tratado como um arquivo .ts solto.

@chuckjaz desculpe o barulho, foi minha culpa, funciona muito bem agora, aqui uma pequena demonstração com @angular/language-service com Eclipse e editor HTML:

angular2languageservicedemo

Funciona muito bem! Muito obrigado pelo seu ótimo trabalho!

@chuckjaz @angelozerr
Pessoal isso significa que com Angular 4.2.0 e Typescript 2.4.0 essas extensões para VSCode ficarão obsoletas e funcionarão em VSCode ou qualquer editor que possa trabalhar com typescript TSServer usando apenas plugin typescript?

Ainda haverá um plugin Angular para o VSCode, mas ele mudará consideravelmente. Em vez de ter seu próprio servidor, ele registrará no VSCode que @angular/language-service é um plug-in TypeScript válido e fornecerá um plug-in padrão se o projeto não incluir um.

O plug-in @angular/language-service funcionará em qualquer contexto que o TypeScript execute em uma instância de nó (isso, pelo menos por enquanto, exclui o Visual Studio propriamente dito). No entanto, para que as conclusões funcionem em um arquivo .html externo, conforme demonstrado por @angelozerr acima, é necessário que o editor saiba direcionar solicitações do arquivo .html para tsserver que está indo ser diferente para cada editor (e é por isso que o plugin Angular para VSCode ainda é necessário).

Oi @chuckjaz , parece que o Typescript 2.4 RC saiu e o Angular 4.2.2 também saiu :). Seria possível tentar atualizar o plugin para essas últimas alterações :). Talvez agora funcione como deveria :).

Estou ansioso por este plugin incrível :).

Obrigada

A atualização da versão 2.1 é um desafio com a arquitetura existente, pois houve algumas alterações internas no TypeScript que quebraram meu servidor. No entanto, a arquitetura do plugin TypeScript torna isso discutível e estou trabalhando para mudar para isso, mas está demorando mais do que eu pensava.

Vou atualizar o serviço de linguagem empacotado com o servidor baseado em 2.1 no início da próxima semana se eu não conseguir juntar todas as peças para a nova arquitetura.

Corrigido em 0.1.4

Se o arquivo .html não estiver associado a um projeto angular, o arquivo .html será tratado como um arquivo .ts solto.

@chuckjaz Eu tenho um problema com isso, eu acho. De fato, quando abro um arquivo HTML que não está vinculado a um modelo Angular, meu arquivo HTML é considerado um arquivo TypeScript e semanticDiagnosticsSync retorna erros de TypeScript (meu HTML tem muitos erros) e não consome o semanticDiagnosticsSync do plugin de serviço de idioma Angular. É um problema que você tem embora? Talvez minha integração seja ruim?

Obrigado pela ajuda!

Esta é a razão pela qual eu ainda não converti para a nova arquitetura de plugins. A equipe do TypeScript está trabalhando com a equipe do VS Code para resolver isso.

O mais seguro é perguntar ao serviço de linguagem Angular quais arquivos são templates e somente solicitar informações do tsserver quando isso for verdade. Não há protocolo existente para isso, no entanto, a solução em que a Microsoft está trabalhando é passar o tipo de arquivo junto com essa solicitação, permitindo que o servidor determine se o arquivo deve ser tratado como um arquivo TypeScript.

Como sempre, muito obrigado por suas ótimas informações! Obrigado @chuckjaz !

Este problema foi bloqueado automaticamente devido à inatividade.
Registre um novo problema se encontrar um problema semelhante ou relacionado.

Leia mais sobre nossa política de bloqueio automático de conversas .

_Esta ação foi realizada automaticamente por um bot._

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