JSer.info #239 - JavaScript LintツールであるESLint 1.0.0がリリースされました。
--reset
のオプションがデフォルトとなり全てのルールがデフォルトOFFとなりました。今までのデフォルトは"eslint:recommended"
という設定を使うことでできるようです。
{
"extends": "eslint:recommended"
}
JavaScriptのスタイルチェックツールであるJSCS 2.0.0がリリースされました。
esnext
というオプションでES6(とJSX)のサポート、スタイルの自動修正機能を改善、ES6関連のルールの追加、//
コメントでチェックを無効化などがサポートされました。
if (x) y(); // jscs:ignore requireCurlyBraces
JavaScriptのパーサライブラリであるEsprima 2.5.0がリリースされました。
2.5.0でES6の機能をフルサポートしたため、ES6のコードを全てパースできるようになりました。
先ほど出てきたJSCSはEsprimaを、ESLintはEsprimaをforkしたEspreeをパーサとして利用しています。
また@hzooさんによりどちらもbabel-jscsとbabel-eslintという形で、BabelがサポートするexperimentalなES.nextのコードもサポートしています。
このbabel-*の仕組みとしては、Babelが内蔵するacornベースのパーサを使いパースした結果を、Esprima互換のAST/CSTに変換することで、ES.nextのコードもJSCSとESLintで使えるようにしています。
JavaScriptのASTについてはESTreeというデファクトスタンダードがありますが、CST(Concrete Syntax Tree)についてはまだ標準的なものはありません。
ESLint、JSCSどちらも、ESTreeのAST仕様では定義されていない"スペース"や";"(セミコロン)といった文字列などもチェックに利用しています。
JSCSではCSTというConcrete Syntax Treeの実装を作り使うようになっていて、ESLintもEsprima由来のtokenを利用しています。
長くなりましたが、何が書きたかったかというと土台となるEsprimaなどのJavaScriptパーサがES6に対応し、それらを使うESLintやJSCSなどもES6へ対応したため、こういったツールがまとめて一段落したように見えます。
そのため、次はCSTなどでよりツールを便利にするために一歩踏み出し始めた感じなので、この辺はまだまだ色々な進化がありそうな気がします。
#19 ES7 | mozaic.fmでもこういったASTツールチェインの話をしているので聞いてみるといいかもしれません。
お知らせ
Realtime JSer.info β始めました。
JSer.infoは週一ですが、realtime.jser.infoは名前の通りその場その場で更新されます。
何かご意見あったら以下のIssueとかに下さい。
(hugoで作り直すPRとかも募集してます)
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
ESLint 1.0.0 released - ESLint - Pluggable JavaScript linter
eslint.org/blog/2015/07/eslint-1.0.0-released
ESLint 1.0.0リリース。
ES6の対応改善、--reset
がデフォルトの挙動となり設定なしではルールを持たないようになった。
"eslint:recommended"の設定を継承することで今までと同じデフォルト設定が得られる。
Release 2.0.0 · jscs-dev/node-jscs
github.com/jscs-dev/node-jscs/releases/tag/v2.0.0
JavaScriptスタイルチェックツールJSCS 2.0.0リリース。
ES.nextをサポートする--esnext
フラグの追加、CSTを実装しAutofixingに利用するように、ES6に対応したルールの追加、コメントによるルールの無効化のサポートなど
Release 2.5.0 · jquery/esprima
github.com/jquery/esprima/releases/tag/2.5.0
Esprima 2.5.0リリース。
ES6の全ての機能をパースできるように
- esprima/ChangeLog at 2.5.0 · jquery/esprima
- ES6 Main Tracking Issue · Issue #1099 · jquery/esprima
- Esprima Meeting Agenda - Google ドキュメント
Flow | Version 0.14.0
flowtype.org/blog/2015/07/29/Version-0.14.0.html
Flow 0.14.0リリース。
型指定してないパラメータをany
と扱うように、Flowコメント構文をブロックコメント内で使えるようになるなど
| Intern 3 is here! | Blog | SitePen
www.sitepen.com/blog/2015/07/30/intern-3-is-here/
JavaScriptテストフレームワークのIntern 3リリース。
IE8のサポート終了、ES6の対応改善、d.tsを追加、QUnit互換のサポートなど
アーティクル
Linting JavaScript in 2015
blog.lauritz.me/linting-javascript-in-2015/
ESLintを使ってJavaScriptのコードをLintする方法についての紹介
New regular expression features in ECMAScript 6
www.2ality.com/2015/07/regexp-es6.html
ES6で追加された正規表現の要素について。
sticky flag、Unicode flag、\u{...}
によるEscape sequencesについて
Flux inside Web Workers — Medium
medium.com/@nsisodiya/flux-inside-web-workers-cc51fb463882
DOM lessな実装をしてればWeb Workerでも動かせる。
FluxをベースにStore->View、View->ActionをpostMessageでやりとりすることで、View以外をWeb Worker上で処理できるという話
Isomorphic Architecture を実装してるときの細かいアレコレ ::ハブろぐ
havelog.ayumusato.com/develop/javascript/e682-universal_architecture_tips.html
シングルページアプリケーションとサーバサイドレンダリングを扱う際に起こる問題と解決策について。
設定の共有をするか、UAの評価、React Componentの<head>
への適応方法、ライフサイクルの管理などについて
Non-blocking Asynchronous JSON.parse Using The Fetch API
azimi.me/2015/07/30/non-blocking-async-json-parse.html
Fetch APIで提供されてるResponse
オブジェクトを使い(new Response(string)).json()
を非同期JSON.parseとして利用する方法について
スライド、動画関係
Learning RiotJS - Video Tutorial Playlist @eggheadio
egghead.io/playlists/learning-riotjs
Riot.JSについてのスクリーンキャストシリーズ
サイト、サービス、ドキュメント
Mithril
Mithrilの日本語訳ページ
WebRTCセキュリティレポート · A Study of WebRTC Security
webrtc-security.github.io/report_ja/
WebRTCのセキュリティについての文章。
WebRTCがどういう仕組みで動いているのか、信頼性が何をベースとして構築されているか、暗号のメカニズム、安全に扱う方法についてなど
書籍関係
Front-End Architecture - O'Reilly Media
shop.oreilly.com/product/0636920040156.do
2015年12月発売
CSSプリプロセス、開発ワークフローツール、JavaScriptのライブラリなどフロントエンドについての書籍