JSer.info #250 - ESLint v1.7.0がリリースされました。
.eslintrc
内に"extends": "./foo.js"
と書くことでJavaScriptファイルを継承出来るようになっています。
また、JavaScript - ESLint 最初の一歩 - Qiitaという記事では、ESLintの使い方、設定方法、エディタ、ES6関連のルールについてなどが紹介されています。
初めてESLintを使う際に見てみるといいかもしれません。
ECMAScriptの仕様策定に関するカンニングペーパー | Web Scratchという記事ではECMAScriptについてQ&A形式で紹介しています。
ECMAScriptに出てくるTC39とは何か?という疑問から、ES6とES.nextの仕様策定プロセス、どのような仕様が提案されているかなどについて書かれています。
仕様策定に関して疑問が出やすい部分について一通り書かれているので、興味がある人は見てみると良いかもしれません。
rollup.jsはBrowserify、RequireJS、Webpackのようにモジュールの結合を行うbundleツールです。
デフォルトではES6 modulesのみを結合しますがpluginによってCommonJSなども対応するようです。
特徴としてサイト上で試すことが出来ますが、他のbundleツールと違いそれぞれのモジュールをラップした関数などがなくキレイに結合されています。
また、モジュールを読み込んでいても使用していない関数は除去されるなどの最適化が行われています。
これはES6 modulesがCommonJSのrequire
のように動的にモジュールを読み込めるものではなく、静的に依存関係が決まること等を上手く活用しています。
- Cycles · rollup/rollup Wiki
- ES6 modules · rollup/rollup Wiki
- Bindings · rollup/rollup Wiki
- JavaScript - ES6 Modules 間では export/import された変数(?)は同期される - Qiita
他のbundleツールとの違いについては以下を参照してみてください。
実際にbundleした結果を比較したものがnolanlawson/rollup-comparisonで公開されています。
(Webpack 2でもES6 modulesを元に使用されていないコードの削除は予定されています。)
このようにrollup.jsはES6 modulesに最適化されたデザインですが、ES6で書いたコードをnpmなどで公開するルールなどはまだ整備されていないのが現状です。
The struggles of publishing a JavaScript library | Read the Tea Leavesでは、npmやBower、jspmにライブラリをどのように公開するかという話が書かれています。
その中でも、npmでは"main"
フィールドに指定するエントリーポイントは基本的にES5環境向けにビルドしたものとなっていますが、公開されたライブラリにES6のコードをどう含めるかについては何も決まっていません。
そのため、ES6 modulesのコード(ライブラリのコードも含む)を参照したいrollup.jsはjsnext:main
というフィールドにES6のエントリーポイントを指定するような規約を設けています。
rollup.jsによって、公開されたパッケージにもES6のコードが含まれている事のメリットが提示されてきたので、今後npmやbundleツールでES6のコードをどう扱うかという話に何らかの進展があるかもしれません。
ちなみに、ブラウザがどのようにES6 modulesを読み込むかという仕様はwhatwg/loaderにて議論されています。
お知らせ
今回で250回目ですが、来年の1月16日でJSer.infoを始めてから丸5年になります。
そのため、2016年1月16日(土)か17日(日)あたりに200回記念イベントと同じようなイベントをやろうと計画しています。
以下にIssueを立ててあるのでご意見がある人は書き込むとよさそうです。
ヘッドライン
ESLint v1.7.0 released - ESLint - Pluggable JavaScript linter
eslint.org/blog/2015/10/eslint-v1.7.0-released/
ESLint v1.7.0リリース。
eslintrcのextends
にJavaScriptのファイルパスそのものを書いて設定を継承出来るようになった
jsdom/Changelog.md at 7.0.0 · tmpvar/jsdom
github.com/tmpvar/jsdom/blob/7.0.0/Changelog.md
jsdom 7.0.0リリース。
Node.js 4.0以降が必要になった。
XMLHttpRequestの再実装、HTMLTemplateElement.prototype.content
の追加など
esprima/ChangeLog at 2.7.0 · jquery/esprima
github.com/jquery/esprima/blob/2.7.0/ChangeLog
esprima 2.7.0リリース。
esprima.tokenize
にdelegatorオプションの追加など
アーティクル
JavaScript - ESLint 最初の一歩 - Qiita
qiita.com/mysticatea/items/f523dab04a25f617c87d
ESLintの使い方、設定方法、ES6関連のルールについて
ECMAScriptの仕様策定に関するカンニングペーパー | Web Scratch
efcl.info/2015/10/18/ecmascript-paper/
ECMAScriptとは何か?からES2016の策定プロセス、進捗の確認方法、コントリビュートのやり方、TranspilerやPolyfillの役割など仕様策定に関する疑問をまとめたもの
ecmascript-6-destructuring-gotcha
www.nczonline.net/blog/2015/10/ecmascript-6-destructuring-gotcha/
let {} = {};
がES6でvalidであるというのは混乱を起こすのではという話。
現在、ECMAScript仕様のIssueとして修正するべきかが議論されている。
EventEmitter in ES6
www.datchley.name/es6-eventemitter/
ES6でシンプルにEventEmitterやObserverを実装しながら、ES6の機能について学ぶ話
The struggles of publishing a JavaScript library | Read the Tea Leaves
nolanlawson.com/2015/10/19/the-struggles-of-publishing-a-javascript-library/
bower、npm、jspmに対応したライブラリの公開方法と設定について。
Browserify、Webpack、rollup.jsでのライブラリのビルドについてなど
Experimenting with Object.observe in JavaScript
www.sitepoint.com/experimenting-object-observe-javascript-found-useful/
ES.nextで提案されているObject.observe
の現状について。
ブラウザのサポート状況、Polyfillについて
StrongLoop | Moving toward Express 5
strongloop.com/strongblog/moving-toward-express-5/
Express 5αでの変更点についての解説
TypeScript 1.6時代の.d.ts管理について意見を述べておく - Qiita
qiita.com/vvakame/items/72d22e33632178f7db24
npmパッケージとTypeScriptのd.tsの管理について。
サイト、サービス、ドキュメント
The Accessibility Project
ウェブ開発者向けにアクセシビリティについてまとめているサイト
ソフトウェア、ツール、ライブラリ関係
rollup.js
ES6 modulesをBrowserifyなどのようにbundleするツール。
使用していない関数は無視したり、余計なラップする関数なしに結合が出来る。
デフォルトではES6のみだがプラグインでCommonJSなども対応する。
Rich-Harris/magic-string
github.com/Rich-Harris/magic-string
Source Mapをサポートしてるコード変換ライブラリ。
文字列の上書き、追加、削除などを文字列操作のように変更を行うことができる。
.eslintrc editor
pirosikick.github.io/eslintrc-editor/
ESLintの設定をGUIでポチポチと作成することが出来るツール
cotejp/webmidi
Web MIDI APIをラップしたライブラリ
dleitee/valid.js
String、Number、Date、Boolなどにおけるバリデーションを組み合わせたバリデーション関数を作成できるライブラリ
rodrigogs/kairos
時間同士の四則演算や比較を行うライブラリ
書籍関係
SVG Text Layout - O'Reilly Media
shop.oreilly.com/product/0636920043072.do
SVGにおけるテキストのレイアウトについての書籍