Jshint: Adicionar suporte para configuração experimental

Criado em 30 jul. 2015  ·  29Comentários  ·  Fonte: jshint/jshint

O JSHint deve expor a funcionalidade experimental / instável por meio de uma configuração que torne esse status óbvio para os consumidores. Aqui está o que estou propondo:

.jshintrc arquivos:

{
  "experimental": {
    "expnt": true,
    "async": true
  }
}

Diretivas inline:

// jshint.experimental expnt: true
/* jshint.experimental async: true */

Embora eu esteja usando propostas de estágio 2 existentes nos exemplos, gostaria de implementar o mecanismo de configuração antes de qualquer opção específica.

Escolhi a palavra-chave "experimental", mas também gosto de "instável", pois ela comunica mais explicitamente a expectativa de mudanças significativas entre os principais lançamentos. @ jshint / core alguma opinião sobre isso?

ES7 P2 Proposal

Comentários muito úteis

async e await agora estão ativos no nó 7.6. Alguma atualização disso ?

Todos 29 comentários

  • experimental: true e experimental: false valores válidos? (Para ativar / desativar todos os recursos experimentais) (Eu sou contra experimental: true porque teria o mesmo problema de enforceall )
  • experimental implica esversion: 6 ?

    Se sim, esversion: 5 implica experimental: false ?

Algum progresso nisso?

Nenhum ainda. Por favor, deixe-nos saber se você gostaria de ajudar!

@jugglinmike eu ficaria feliz em ajudar. Ainda não toquei em jshint, exceto para usá-lo em meus projetos, embora possa demorar um pouco, mas vou começar a bisbilhotar na próxima semana. Isso seria melhor feito como um PR para adicionar experimental: [] e um recurso experimental que pode tirar proveito disso?

@tschuy Ótimo! Eu esperava implementar a lógica de análise de configuração separadamente de qualquer recurso específico. Será mínimo, e você só poderá testar a opção conforme especificado por meio do arquivo RC (basicamente, apenas "experimental": {} não deve lançar erros - não há equivalente para um "vazio" in-line diretiva).

Vejo que você usou colchetes em seu comentário. Não tenho certeza se isso foi apenas um erro de digitação de sua parte, mas a solução que descrevi especifica isso como um valor de objeto.

Por enquanto, estou cancelando as atribuições. Parece que estava um pouco otimista demais quando criei este problema.

  1. @tschuy Você ainda está trabalhando neste recurso?
  2. O que você acha de permitir experimental.option ?
    por exemplo

    // jshint option: true, experimental.option: true
    

    que é mais curto que

    // jshint option: true
    // jshint.experimental option: true
    

Olá a todos,
posso perguntar - há algum progresso nessa questão?
Muito obrigado.

qualquer notícia?

queremos começar a usar o ES7!

@phra com qual recurso do ES7 você está tendo problemas ao usar o JSHint?

Acabei de experimentar no site oficial -> http://jshint.com/

tente escrever uma função assíncrona ES7: leva a palavra-chave 'async' como uma variável e gera um erro.

Esse recurso não existe no ES7 / ES2016. Aqui está uma boa postagem no blog que lista todos os recursos do ES7 / ES2016: http://www.2ality.com/2016/01/ecmascript-2016.html

http://kangax.github.io/compat-table/esnext/

A função assíncrona está no estágio 3 da padronização ES2017, eles ainda não estão no estágio 4, mas o babel os suporta e eles são MUITO legais e economizam tempo.

você está planejando implementar suporte para eles?

JSCS os suporta -> http://jscs.info/rule/disallowSpacesInFunctionExpression

Estou usando jshint e jscs para controle de qualidade e jshint está me impedindo de adicionar suporte à função babel w / async ao meu projeto.

a função assíncrona está no estágio 3 da padronização ES2017

O recurso perdeu o prazo ES2017. JSHint tem o compromisso de apoiar o estágio 2 ou superior, mas requer recursos humanos e tempo para implementação.

async e await agora estão concluídos e no último rascunho da especificação ES2017.

Eles também estão sendo vendidos em cromo e firefox. Podemos reavaliar esse problema?

[atualização] a proposta está concluída, então deveria aparecer no último rascunho do ES2017, mas não aparece. Não tenho certeza o que isso significa.

[atualização2] aha! acabou de se fundir na especificação: https://github.com/tc39/ecma262/pull/692

async e await agora estão ativos no nó 7.6. Alguma atualização disso ?

Este problema é o local definitivo para rastrear a solicitação de recurso, portanto, se
havia qualquer informação nova, você poderia esperar encontrá-la aqui. Você iria
gostaria de ajudar?

Ainda sem suporte para await / async? Triste...

@xduseko , JSHint é um software de código aberto mantido por um grupo de colaboradores voluntários.

Qualquer um pode bifurcar o repo, implementar assíncrono / esperar e enviar uma solicitação de pull com testes. Ou qualquer um pode esperar até que a equipe principal encontre tempo livre para implementá-lo.

O que você esperava ganhar com seu comentário?

@xduseko Sim, concordo que é um pouco triste, mas eventualmente estará lá - estou confiante. :dedos cruzados:
Se for de algum alívio; no momento, o JSLint também não tem.

Por causa da falta de async / await, tentei migrar para o ESLint, mas foi um grande incômodo. Por fim, voltei para JSHint. Qualquer linter - acho que JSHint ainda é o melhor - representa um valor tremendo ao escrever JavaScript.

Para me dar bem, estou apenas treinando meu olho para ignorar as instruções async / await destacadas em meu IDE. 🙈

Ao contrário de @semmel, não consigo treinar meu olho para ignorar erros de assíncrono / espera. Na verdade, se eu usar uma variável não declarada antes de usar async / await, ele não mostrará um erro para a variável não declarada e isso é meio chato.

Existe uma maneira de fazer o JSHint ignorar coisas assíncronas / aguardar por enquanto?

@johnRivs você deve migrar para eslint ou tslint .

Apoiando isso.

ISTO. É. SURPREENDENTE.

É expnt expoente ? Em caso afirmativo, ele pode ser chamado de exponent ? Acrns dnt hlp unstdng.

É expoente expnt? Em caso afirmativo, ele pode ser chamado de expoente? Acrns dnt hlp unstdng.

@jugglinmike ^^

@mikemaccana Era para ser, sim. O tempo para um suporte "instável" para o operador de exponenciação já passou (estará disponível via esversion: 7 na próxima versão secundária), então nunca veremos essa opção específica implementada. Seu conselho é bem ouvido, então, obrigado!

A solução mais elegante agora parece ser localizar e substituir async por /* async */ e vice-versa se você estiver validando por meio do site JSHint.

@patrickdark Essa é uma solução alternativa parcial para gh-2604, mas infelizmente não leva em conta AwaitExpressions.

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

Questões relacionadas

jugglinmike picture jugglinmike  ·  6Comentários

voronianski picture voronianski  ·  8Comentários

damyanpetev picture damyanpetev  ·  4Comentários

Daniel-Hug picture Daniel-Hug  ·  3Comentários

ghost picture ghost  ·  3Comentários