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?
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.
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?
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.
Comentários muito úteis
async
eawait
agora estão ativos no nó 7.6. Alguma atualização disso ?