"use strict"; function f(n){ if (n <= 0) { return "foo"; } return g(n - 1); } function g(n){ if (n <= 0) { return "bar"; } return f(n - 1); } return f(1e6) === "foo" && f(1e6+1) === "bar";
"use strict"; function f(n){ if (n <= 0) { return "foo"; } return g(n - 1); } function g(n){ if (n <= 0) { return "bar"; } return f(n - 1); } return f(1e6) === "foo" && f(1e6+1) === "bar";
2019年版: 脱Babel!フロント/JS開発をTypeScriptに移行するための環境整備マニュアル環境構築TypeScriptライブラリReact TL;DR いろいろ書いていますが、一番書きたかったのは最初のライブラリと最後のReact Componentのプロジェクトの作り方ですね。ぱっとnpm installして、最初から型定義ファイルが入っていて、@typesを持っているライブラリを探したり、自分で.d.tsを書いたりしなくてもいい世界がやってきて欲しいな、という気持ちから書いています。 ここで紹介したTypeScript環境構築はすべて、自分用にYeomanのテンプレートとして作成したので、以下のジェネレータをインストールして選択したらそれでおしまいです。 @shibukawa/typescript (npmには公開していないので、checkoutしてビルドしてインストール
たくさんある道具をどのように組み合わせるか 今回はコード設計編のつもりでしたが、ビルド周りを先にまとめることにしました。主にパフォーマンス上の都合ですが、心がけたポイントは次の点です。 画一的なバンドルではなく、適切なバンドルを選択的に配信できるようにする 適当な粒度で Code Splitting できるようにする ひとつのツールに何でもかんでもやらせない( webpack、お前のことだよ!) ビルドのパイプラインを短く、シンプルに済ませる(できることを全てやろうとしない) タスクランナーは前回述べた通り make を利用しています。同僚が使っているのを見てパクりましたが Self-Documented Makefile の手法が、タスク名忘れに優しくてよかったです。 npm run したら npm scripts が一覧で出てくるのと似たようなやつです。 このシリーズの他の記事はこちら
問題 nodeに読み込ませるソースをwebpackとbabelでコンパイルするようにすると, エラー時のスタックトレースが at Object.eval (webpack-internal:///76:29:7) のような意味不明なものになってしまいます. これはソースマップを有効にしていても起きてしまいます. webpackのissueにも既にこの問題は報告されていましたが. SourceMap don't link to an src file but to webpack-internal:///[LINE_NUMBER] · Issue #5186 · webpack/webpack 「source mapはブラウザが読み込むものだからnodeは取り扱わないよ」とownerにすげなく言われています. 解決法 evanw/node-source-map-support: Adds s
9つのおとぎ話 CSSは迷走しています。JavaScriptでドキュメントをスタイリングしているプロジェクトでは、多くの場合誤った理由からその方式を選択しています。本稿では、よくある誤解(神話)を列挙し、そうした問題に対するCSSソリューションを紹介します。 本稿は、特定のプロジェクトや人物への攻撃を意図するものではありません。ここでは、“CSS in JavaScript”(CSS in JS)を styled-components を使用することと定義します。これは、Reactのコンポーネントをスタイリングする最近のトレンドとなっています。 styled-components の作者である Max Stoiber と Glen Maddern 、また彼らに協力した人々は皆、卓越したアイデアと善意にあふれる優秀な人々です。 完全な透明性のために断っておくと、私は react-css-mo
小ネタ。 Electron が採用している Chromium は ECMAScript 対応がかなり進んだ。よって Babel を使用しつつも変換を最小におさえたくなる。 この点について以前 babel-preset-env と minify という記事を書いたのだが uglify-js の ES2015 以降への対応は暫定版。そのため、よりよい選択肢として babel-preset-babili を試してみた。その記事のコメントで mysticatea さんが提案されているように Browserify へ -g オプションをつければ node_modules 部分も含めて minify 可能だが、それでも Browserify の Bundle 処理は minify されない。 よって uglify-js harmony 版が正式リリースされるのを待っていたところ uglify-es が
2017年1月に、ようやくwebpack 2のリリースからbeta/rcが外れ、正式にリリースとなりました。 これによってnpm installでデフォルトに入るバージョンが2系となり、誰でも気軽に強力な追加機能のメリットを享受できるようになった一方、メジャーバージョンアップによる破壊的変更が加えられたことによって、従来のwebpack.config.jsは動作しない形となりました。 今回はまだまだ日本語の移行資料が少ないwebpack 2について、新しい機能と、1.xからの移行の方法を簡単にご紹介いたします。 webpack 2の機能 webpackも2系になっていくつかの機能が追加されました。小さなものから、比較的大きなものまで様々ですが、今回は影響の大きそうなものをいくつかご紹介いたします。 import/exportの標準対応 webpack 2では、import/export構文
Babel v6 As of Babel v6, Babel doesn't contain any transformers itself anymore. You have to explicitly specify any feature you want to transform. Presets - non ES2015 environment The quickest way to get this working is to use presets which already contain the set of plugins needed to transform ES2015 and newer proposals. For async, you will need the es2015 and es2017 presets and the runtime plugin
この一か月分の学習成果を整理したリポジトリを作ったので、その成果についてまとめておく。 作ったサンプルプロジェクトだけを手軽に欲しければ、このリポジトリを clone してほしい。 taichi/js-boilerplatemaster ブランチには、ミニマムな JavaScript 開発環境がサンプルコード付きで入っているfrontend ブランチには、React/Redux/webpackなウェブアプリケーション用の開発環境が入っているデフォルトブランチにしてある electron ブランチには、frontend ブランチの内容に加えてElectronでアプリケーションを開発するための環境が入っているはじめに#最近の JavaScript について#僕は仕事として JavaScript を書いている訳ではないけども、この半年くらいの間にちょっとしたツールならいくつか作った。どちらも便利
V8 SpiderMonkey JavaScriptCore Chakra Carakan KJS Other ⬤ Minor difference (1 point) ⬤ Small feature (2 points) ⬤ Medium feature (4 points) ⬤ Large feature (8 points) Compilers/polyfills Desktop browsers Servers/runtimes Mobile Feature name Current browser ES6 Trans- piler Traceur Babel 6 + core-js 2 Babel 7 + core-js 2 Babel 7 + core-js 3 Closure 2020.06 Closure 2020.09 Closure 2021.08 Closure 20
先に言っておくと、IE11は死ぬ。 何がしたいか 前提として、現代では ES Modules を除けばほとんどのモダンブラウザ(IE11を除く)でES2015は実装が終わりつつあり、IE11のような特定の環境を除けばほんのすこしの変換でES201xのコードが動く。うまくやれば、コンパイル時間もbabelの起動時間も短縮できる。何度も言うがIE11は死ぬ。 それと、先週リリースされたChrome55でasync/awaitがデフォルトで有効になった。これで何ができるかというと、babel で async/await をコンパイルすると、CPS変換で巨大なスイッチ文に変換してとにかくコードが読みづらいという問題があって、それをネイティブの機能を使うことで解決できる。(ソースマップもよくわからんところに吹っ飛んで使えなかった) このアプローチを試みた際の問題 browserify/webpack
普段、railsを使ったwebサービスの開発を行っています。 いままで、rails + JQueryで開発を行っていましたが、 reactを導入してみる流れとなり、 その際にwebpackを使ったので、まとめておきます。 目次 ■webpackの役割 ■実際のディレクトリ構成 ■package.jsonについて ■webpack.config.babel.jsの設定 ■デプロイ時はどうするか ■まとめ webpack役割 webpackについてざっくり説明すると、 => ビルドツール(依存関係のあるJSやクライアントサイドのアセット群をいい感じにしてくれる) 今回webpackでやっていること ■Reactに関わるファイル(複数)の結合 ■ソースコードの変換(es6 -> es5, jsx) => babelが便利(webpack + babel-loader) ■ビルドしたコードの配置先
はじめに みなさんにdisられて久しいsprockets氏ですが、メリットはそのままこれまでの問題を解決してくれるsprockets-commonerという素晴らしいgemを見つけたので紹介します。 sprockets-commonerとは sprockets-commonerとは、Railsコミッターも在籍するShopifyで作られたsprocketsの拡張gemです。 このgemの機能の中でも特に嬉しいのは以下の2つの機能です。 1. node.js/ESnextでフロントエンドを書けるようになる sprockets-commonerを入れると、sprockets管理下のJSファイルをbabelでトランスパイルしてくれるようになります。 そのため、node.js/ESnextでフロントエンドを書けるようになります。 一応、sprockets次バージョンの4でもESnextは書けるように
babel.client.js �B ߗU ���ۗU const config = { presets: ['es2015', 'stage-3', 'react'], plugins: [ 'transform-object-rest-spread', 'transform-function-bind', 'transform-class-properties', 'transform-decorators', ], sourceMaps: 'both', }; if (process.NODE_ENV === 'production') { [ 'transform-react-constant-elements', 'transform-react-inline-elements', 'transform-node-env-inline', 'remove-debugger', '
https://zeit.co/blog/next の翻訳です。 > Naoyuki Kanezawa (@nkzawa), Guillermo Rauch (@rauchg) and Tony Kovanen (@tonykovanen) > 2016年10月26日 私たちは、サーバレンダリングされるユニバーサルなJavaScriptウェブアプリのための小さなフレームワークであり、ReactやWebpack、Babel上に構築され、このサイト(訳注: https://zeit.co )を動作させているNext.jsをオープンソース化することをとても嬉しく思います! (Next.jsの"Hello World") Next.jsを使い始めるには、package.jsonを含む新しいディレクトリ内で次のように実行してください。
最低限のコストで最近よく聞くいい感じのjsを書きたい時の構成をずらーっと書いてみる 準備するもの node/npm (最近はrbenvクローンのnodenvがいい感じ、操作は同じ) webpack babel .babelrc .babelrcを設置しとくとbabelのデフォルト設定がこいつの中身で書き換わる Reactを使わないなら、presetのreactはいらない export defaultされたパッケージをimportした時に.defaultで引くのを許せるなら、add-module-exportsはいらない(後述) Reactいる { "presets": [ "es2015", "stage-0", "react" ], "plugins": [ "add-module-exports" ] } いらない { "presets": [ "es2015", "stage-0"
ES6 + React + Redux + webpack なフロントエンド環境を構築するためのメモ。 packages.json npm install --save react react-dom react-redux npm install --save-dev babel-loader babel-core babel-preset-es2015 babel-preset-react npm install --save-dev webpack webpack-dev-server react-hot-loader npm install --save-dev eslint eslint-plugin-react eslint-plugin-import { "name": "my-env", "version": "1.0.0", "description": "", "scr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く