JSer.info #372 - webpack 4が正式リリースされました。
ビルドパフォーマンスの改善、mode
オプションの追加、CommonsChunkPlugin
を廃止し代わりにoptimize
オプションの追加、.wasm
、.mjs
などをEntry Pointとしてサポートなどが行われています。
新しいプラグインシステムが導入され、plugin/loader周りに破壊的な変更が行われています。
まだ、いくつかのplugin/loaderは4.xには対応していないものもあります。
plugin/loader作者向けのマイグレーションガイドは次の記事で公開されています。
Maybe you don't need Rust and WASM to speed up your JSという記事では、@mralephさんがプロファイルを取りながらパフォーマンス改善を行うことについてをmozilla/source-mapを例に解説しています。
最近、mozilla/source-mapは作者である@fitzgenさんによってWebAssembly + Rustに書き換えられパフォーマンスが改善されました。これについては次の記事で解説されています。
しかし@mralephさんは、元となったJavaScript版での改善の余地について分析し、JavaScript版を元に改善のアプローチを3つのグループに分けて解説しています。
この記事ではd8
(V8)やperf
を使ったプロファイルを取りながら、言語やV8の実装など深いところまで見ていく形になっています。
また、この記事に対して@fitzgenさんがSpeed Without Wizardryというレスポンス記事を書いているので併せて読むと良さそうです。
KeyboardEvent.keyCodeとは何か - WebStudioという記事ではKeyboardEvent.keyCode
の歴史や問題点について書かれています。
KeyboardEvent.keyCode
はブラウザやOS間で互換性の問題があり、また標準仕様がない問題について書かれています。
keyCode
の代わりにKeyboardEvent.keyやKeyboardEvent.codeなど仕様化されたものがあります。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
jest/CHANGELOG.md at v22.4.0 · facebook/jest
github.com/facebook/jest/blob/v22.4.0/CHANGELOG.md
Jest 22.4.0リリース。
nohoist in Workspaces | Yarn Blog
yarnpkg.com/blog/2018/02/15/nohoist/
yarn workspaceのnohoist
オプションについての解説
Release v1.1.0 · GoogleChrome/puppeteer
github.com/GoogleChrome/puppeteer/releases/tag/v1.1.0
puppeteer 1.1.0リリース。
Chromium 66.0.3348.0に更新、BrowserFetcher
、page.waitForXPath
のサポート。
frame
周りのイベントサポートの追加など
Release electron v2.0.0-beta.1 · electron/electron
github.com/electron/electron/releases/tag/v2.0.0-beta.1
Electron v2.0.0-beta.1リリース。
Chrome 61.0.3163.10、Node 8.9.3に更新。
非推奨のAPIの削除、window.loadFile
のサポート、Macでin-app purchaseのサポートなど
Node v9.6.0 (Current) | Node.js
nodejs.org/en/blog/release/v9.6.0/
Node v9.6.0リリース。
asyncResource.emit{Before,After}
が非推奨となりasyncResource.runInAsyncScope
を代わりに追加。
Dynamic Importのサポート、vm
モジュールがES Moduleをサポート、
Release [email protected] · almin/almin
github.com/almin/almin/releases/tag/almin%400.16.0
almin 0.16.0リリース。
Context
のdispatcher
がオプショナルな引数に変更、almin-react-container
のバグ修正など
🎼webpack 4: released today!!✨ – webpack – Medium
medium.com/webpack/webpack-4-released-today-6cdb994702d4
webpack 4リリース。
ビルドパフォーマンスの改善、mode
オプションの追加、CommonsChunkPlugin
の代わりにoptimize
オプションの追加、.wasm
、.mjs
のサポートなど。
新しいプラグインシステムが導入され、plugin/loader周りに破壊的な変更が行われている。
- Release v4.0.0 · webpack/webpack
- webpack 4: mode and optimization – webpack – Medium
- webpack 4: migration guide for plugins/loaders – webpack – Medium
- Webpack 4.0 Release: What's New?
Release v5.7.0 · npm/npm
github.com/npm/npm/releases/tag/v5.7.0
npm 5.7プレリリース。
package-lockのgit merge conflictを解決するnpm-merge-driver
の公開、
常にlock-fileのみを参照するnpm ci
コマンドの追加など。
5.7.0にはsudo
利用時に問題があるため、5.7.1がリリースされている。
アーティクル
Using Promise.prototype.finally in Node.js | www.thecodebarbarian.com
thecodebarbarian.com/using-promise-finally-in-node-js.html
Promise#finally
についての記事。
Promiseの状態遷移やfinally
の動作について。またfinally
のハンドラでエラーが起きた際の動作について
Measuring the Impact of 3rd-Party Tags with WebPageTest - Andy Davies
andydavies.me/blog/2018/02/19/using-webpagetest-to-measure-the-impact-of-3rd-party-tags/
WebPageTestを使ってサードパーティスクリプトがロードパフォーマンスにどのような影響を与えているかを比較する方法について。
特定のリクエストをブロックした結果と比較する方法について
KeyboardEvent.keyCodeとは何か - WebStudio
d-toybox.com/studio/lib/what_is_keyCode.html
KeyboardEvent.keyCode
の歴史や実装について。 keyCode
はOSやブラウザ間で問題があり標準化もされていないため、key
やcode
を代わりに使うべきという話。
Maybe you don't need Rust and WASM to speed up your JS
mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html
プロファイルを取りながらパフォーマンスを改善していく話。 Rust + wasmで書き直されたSource Mapライブラリを例に、JS版でのボトルネックを調べ改善していく話。 アルゴリズムの改善、言語に依存する問題、実装に依存する問題について
スライド、動画関係
ECMAScriptの使い方
azu.github.io/slide/2018/node/ecmascript39.html
ECMAScriptのバージョンの歴史、なぜES2016以降の策定プロセスを変更したのかについて。
各ブラウザ実装の比較、仕様やプロポーザルの調べ方や利用方法について
ソフトウェア、ツール、ライブラリ関係
Wedgetail
コードの実行時間が期待値かをテストするライブラリ。 low、hight、averageを指定しコードの実行時間のテストを行える。 またパーセンタイルに対応している。
theia-ide/theia: Theia is a cloud & desktop IDE framework implemented in TypeScript.
monaco-editorベースのCould IDE、Desktop IDE。
書籍関係
Exploring ES2018 and ES2019
exploringjs.com/es2018-es2019/
Exploring ES2018 and ES2019が公開された