gulp.task('copy', function() { // ファイルをコピー gulp.src('src/file').pipe(gulp.dest('dest')); }); // copyに依存するタスク gulp.task('done', ['copy'], function() { // ファイルコピー完了「前」に実行される!! console.log("copy done"); }); gulpが高速に動作する理由の一つはこの非同期性ですが、どうしても同期的に処理したい場合(すなわち特定のタスクの完了を待ってから別なタスクを実行したい場合)もあると思います。 この記事では同期的にタスクを実行する方法として、gulp API docsに記載されているもの、そしてその発展形を紹介します。 タスク内の非同期処理が一つだけの場合 Streamをreturnする まずは1番お手軽な
こんにちは、ほそ道です。 前回のJasmineモジュールテストに引き続きテストを掘り下げていきます。 今回はUIテストをやってみたいと思います。前回分も読んでおいていただくと理解度シナジーが起こって良い感じになると思います。 目次はこちら 今回扱う範囲/扱わない範囲 まずはブラウザ上でJavaScriptを実行しJasmineと絡めて実行結果をテストします。 次にブラウザ上のDOMの状態(スタイル含む)をテストします。 今回のテスト内容にとりあえず遷移というかページ(リ)ロードは含めません。これが絡むと非常に厄介さが増すので遷移は別途取り上げたいと思います。 Karmaを実行する まずはKarmaの実行から。 Karmaは実ブラウザでJavaScriptコードを実行できる実行環境で、テストフレームワークと組み合わせてテストを行う事ができます。 エミュレータやヘッドレスブラウザではなく実ブラ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Useless background About 8 months ago, I started looking around for solutions for how to test React components but didn't have any good ideas. I first tried out QUnit, which seemed to work fine, but I wanted it to be run automatically. I tried a qunit runner kind of like
GraphQL Lee Byron - Exploring GraphQL at react-europe 2015 - YouTube React Europe 2015内でGraphQLのworking draftとGraphQLサーバのtechnical previewの公開が発表されました。GraphQLのアイデア自体は以前に発表されていたようですが、今回のReact Europe 2015で初めて具体的な仕様と実装が発表されました。 GraphQLはFacebookが開発した、クライアントとサーバ間のデータのやりとりを簡単にするための言語です。 言語だけではなく、GraphQLを使うクライアントとサーバの仕様も含んで「GraphQL」と表現していました。 参考資料 GraphQL GraphQLのworking draft graphql/graphql-js GraphQLサー
要約 rimrafかdelを使用しましょう。 はじめに gulp.jsにおいて、かつてはファイル削除のためのプラグインとしてgulp-rimrafやgulp-cleanが存在しましたが、どちらもdeprecateされました。gulp.srcを用いない、ファイル削除以外の余分な処理を行わない手段を用いれば、これらのプラグインを使用する必要はありません。 単一のファイル/ディレクトリを削除する rimrafを使用します。従来より、gulp-rimrafの作者が推奨している方法です。 var rimraf = require('rimraf'); gulp.task('clean', function (cb) { rimraf('./dir', cb); }); gulp.task('build', ['clean'], function() { // Something });
Electronを使って見栄えを整えてみる ElectronはJavaScriptでデスクトップアプリケーションが作れるツールです。 前回「30分で出来る、JavaScript (Electron) でデスクトップアプリを作って配布するまで」では簡単なアプリを作って配布するところまでやりました。 あとはいつも通りの JS + HTML + CSS でガリガリ書いていけばいいのですが、まずは見た目から入ろうということで、もう少しアプリっぽい見栄えにしてみましょう。 ちなみに、Macではいろいろ動作を確認しましたが、Windowsは知りません。 大体同じように動くはずですが、もしダメだったらWindows版の記述を教えて頂けると助かります。 基本設定は browser-window APIで browser-windowはアプリのウィンドウを表示するためのAPIです。 例えば、以下は単なるin
はじめに browserifyは、CommonJSスタイルで書かれたJavaScript (Node.js)のコードをクライアントで実行可能な形式に変換するライブラリです。ここではbrowserifyがビルドの際に用いているbrowser-packが、与えられたコードをどんなコードを出力するのかを見ていきます。browser-packのバージョンは6.0.1。 入力 Readmeにある以下のjsonを試してみる。この形式はちょうどmodule-depsの出力結果と同じもので、browserifyも内部でmodule-depsを利用している。内容は 各モジュールを一意に指すID コードの本体 各モジュールが依存する(内部でrequire()を使って呼び出している)モジュールのパスとID そのモジュールがエントリポイントかどうか の4種類。 (function outer(modules, c
こんにちはほそ道です。 今回はnodeモジュールについて備忘録的に書き倒したいと思います。 目次はこちら モジュール Node.jsではrequire('モジュール')という文法を使って機能拡張を行います。 ブラウザのJSでは<script>タグを使って外部JSを読み込んで利用する事ができますが、 こちらは外部ファイルを読み込んで使用するにはrequireを使用します。 組み込みでいくつかの コアモジュール と呼ばれるモジュール群が提供されています。 コアモジュールはインストール後はビルド済みのバイナリになっており、 いままでの記事で登場したfsやeventsはコアモジュールです。 ソースや一覧を確認する場合はgithubの./libを参照しましょう。 その1:簡単なサンプルモジュールのロード 早速、自作のモジュールを作り、ロードしてみようと思います。 下記のような構成です。main.js
先日参加した、isomorphic tokyo meetupで紹介されていたfetchrが良さそうだったので、使ってみた。 fetchrが解決する課題 React+Fluxでサーバサイドレンダリング時に、superagentやaxios、isomorphic-fetchなどのIsomorphicなHTTPクライアントを使ってデータをフェッチするが、そのまま使うと下記のような課題にぶつかる。 ブラウザから直接BEのAPIにアクセスできない(またはさせたくない、外部のAPIでキー・シークレットをブラウザ側で持ちたくない)場合、そのAPIとProxyするエントリポイントを作る必要がある。 フェッチ部分のロジックが共有されるので、ブラウザではWeb API経由でフェッチして、サーバサイドレンダリング時は直接DBにクエリを叩きたい、みたいなのを自分で実装すると面倒。 fetchrはBEや外部のAPI
gulpでwatch中に、何かしらエラーが発生した場合、通常watchもろともgulpが終了してしまい、もう一度watchをしなくてはならなくなってしまいます。 これが何度もあると非常にストレスが溜まって体に良くない。 ここで便利なのが、gulp-plumber。こいつを用いることによってエラーをした後もwatchが止まらないで済みます。gulp-notifyというやつを入れると通知が出てさらに便利になります。 しかし、browserifyでjsをがっちゃんこさせるときに、jsがおかしいとplumberでもエラーを制御することが出来ませんでした。 gulp-starterで解決 gulp-starter 上記ファイル内の、 gulp/util/handleErrors.js var notify = require("gulp-notify"); module.exports = func
いつもいつもexpressには大変お世話になっています、 でもちょっとした気の迷いからkoaに浮気しちゃいました、 koaの魅力をお伝えして、浮気の言い訳してみます koaについて koaはTJ Holowaychuk他Expressの開発メンバーが開発しているcoベースのnode 0.12向けWebフレームワークです。koaについてはかずぽんさんの以下記事が詳しいです: 浮気現場 浮気現場はここです: 浮気の仕方はこちら: ただのブログアプリです、管理画面のスタイルがまだ中途半端ですが…そのうち更新します。 koaの魅惑 では早速、koaの魅力を懺悔します、以下koaの公式ページより: KoaはExpressチームによる新しいWebフレームワークです、より小さくて、より表現的でロバストなWebアプリーションとAPIのためのフレームワークです。generatorを利用することでコールバック
2016-01-31追記 この記事を最初に書いた頃は他に何も情報がありませんでしたが、今ではよりだいぶわかりやすい資料が出揃ってきました。しっかりとしたimport/exportの仕様をもっと知りたい場合は下記を参照することを推奨します https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/import http://www.slideshare.net/teppeis/effective-es6 http://uehaj.hatenablog.com/entry/2015/11/07/001848 2015/12/05追記 コメント欄より Babel v6 から Babel 公式の transform である transform-es2015-modules-commonjs を使った場合 ES
普段業務ではタスクランナーにGruntを使っているのですが、別件で簡単なアプリケーションを作ることになりました。 小さいプロジェクトにはGruntよりGulpがいいんじゃない?とか 今流行ってるし一回使ってみるかとか そういう気分で試してみたので、メモを兼ねて紹介します。 GruntとGulpの違い Grunt:「設定ファイル」に近い 箇条書きのようにつらつらと設定を書いていくため、タスクの流れを読みづらく、膨大になりやすいという欠点がある。(もちろんとても便利ですが) (今のプロジェクトではcoffeeで書いてるのに700行くらいあって泣いてる) Gulp:処理を「プロセス」として記述 あれをこうしてここに入れる、と処理が一連のプロセスになるので、読みやすい。 あとなんか速いらしい。(曖昧) 大体このくらいの認識です。 バージョンとか node: v0.10.29 下記をpackage.
JSのテストカバレッジの生成ツールとして、istanbulというのがあるけれど それをGruntタスクに取り込むための方法。 具体的には、mochaを使って、grunt-istanbulを使えるようにする流れ。 例は https://github.com/hiroosak/grunt-istanbul-example に記載してます。 処理の流れ カバレッジを出力するには アプリコードをカバレッジ用コードに変換する カバレッジ用のコードに対してテストを実行する カバレッジの結果を保存する カバレッジレポートを出力する それぞれで、gruntの別タスクで処理が行われる。 instrumentタスク mochaTest タスク storeCoverage タスク makeReport タスク instrument タスク カバレッジの生成タスクの名前は instrument。 設定の仕方は以下
なんだこのプレゼンは? と思ったプレゼンをネット上で見かけた。 Build Warsへのリンク JavaScriptのプロダクトをうまい具合にビルドするためのツール、 Gruntとglupを比較したプレゼンだ。 gifアニメが多用されてるし、オサレでカッコイイ。 何使ってこのプレゼン作ってるんだ!?と思って調べてみたら、 このプレゼンの作者が自分で作っていた。 bespoke.jsというアプリだった。 bespoke.js bespoke.jsというプレゼンアプリを早速使ってみたい。 セットアップや、プレゼンのスケルトン作成って めんどくさいのかなと思ったんだけど、yeomanを利用して テンプレを作成する形になってて、 プレゼン作成準備に必要な手間は少ししかなかった。 bespoke.jsを使うまで bespoke.jsをセットアップするのに必要なツールは以下の通り。 node.js y
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く