Node.js
package.jsonに "scripts": { "lint": "eslint src/**/*.{js,jsx}" } と書いた場合、npm run lintやyarn run lintは、このコマンドをシェルを通して実行する。このときデフォルトではshが使われる。例えばmacOSだとshはbashなので、bashがsrc/**/*.{js,jsx}…
Mongooseは3からバージョニングという機能が入ったんだけどよくわかってなかったので調べたメモ。詳しくはここに書いてある。 http://aaronheckmann.tumblr.com/post/48943525537/mongoose-v3-part-1-versioningバージョニングを使うと何がいいかというと、…
その昔はrequire.pathsというのがあってプログラム内からロードパスを設定できたんだけど、いつしかrequire.pathsは廃止され、NODE_PATHで設定するしかなくなった。でもNODE_PATHだとプログラムの中からロードパスを変更することができない。 // libにパスを…
例えば入力ファイルの行数をカウントするlinecount.jsっていうのがあったとして $ node linecount.js foo.txtっていう使い方と $ cat foo.txt | linecount.jsって両方に対応したいときNode.jsではprocess.stdin.isTTYを使えば判定できる。 if (process.stdin…
僕がpull requestして取り込んでもらったcontextが消えて残念思ったんだけど https://github.com/visionmedia/mocha/commit/914c73654ecdc7c8c9431cfa48b13d59241b201d次の日にrevertされてたw https://github.com/visionmedia/mocha/commit/c44cf13773ab9b…
補完関数書いた。 https://github.com/hokaccha/nodebrew/blob/master/completions/zsh/_nodebrewこれを$fpathがとおってるところに置くと動くはず。ホームディレクトリとかに補完関数を置きたいなら.zshrcに fpath=($HOME/.zsh_fun $fpath)とか書いて ~/.zs…
buildpackで動かしてるNode.jsで、1回インストールされたnpmのモジュールがpackage.jsonから消えないのでbuildpackのスクリプトに npm prune を追記した。 https://github.com/hokaccha/heroku-buildpack-nodejs/commit/e942d5a91e24fe5850b9e2cbe072a4f2c6a…
aliasとunaliasというコマンドを追加したnodebrew v0.5.0をリリースした。 https://github.com/hokaccha/nodebrew僕は常に最新版のnodeを使ってるわけじゃなくて一個固定のやつ(今はv0.6.6)を使ってて、必要な時に必要なバージョンをuseして、終わったらま…
0.7.1からpath.existsはfs.existsになったらしい。existsSyncも同じく。後方互換でpath.existsもまだ使えるけどWarningでる。のでひとまずこうした。 var exists = fs.exists || path.exists;
SSLでCookie使う場合はsecure属性つけて非SSLの場合にはCookie送信しないようにするって仕組みがあるわけだけど、connectのsessionもその実装はされてる。 app.use(express.session({ secret: yourSecret, cookie: { secure: true } })); こんな感じ(コード…
expect.jsはかなりいいんだけどthrowExceptionでエラーオブジェクトのチェックができなくて微妙だったんでパッチ投げようかと思ったけどまさに自分が実装しようと思ってた機能が実装された。 var expect = require('expect.js'); var fn = function() { thro…
BDD Assert系のモジュールでchaiとexpect.jsを試した。機能はほぼ変わらないけどブラウザのサポートでけっこう差が出た。(ここでいう機能が変わらないってのはchai.expectと比較しての話し。chai.assertとかchai.shouldを考えると完全にchaiが高機能) http…
lesscでwatch的なことがしたかったんだけどできなくて、他にそういう系のツール探してみたけどいい感じのが見つからなかったんで適当に書いてみた。 https://gist.github.com/1632134 監視するファイルのリストとコマンド指定するだけ何でlessだけじゃなくて…
use strictは関数内に書けばその関数内だけで有効になるわけだけど、グローバルの領域に 'use strict'; ... とか書くと、人が書いた他のモジュールに影響出ちゃうんで (function() { 'use strict'; ... })(); こうするのが礼儀かと思ってたけど、やってみた…
GitHub - hokaccha/nodebrew: Node.js version manager主にinstallとかuseのときのバージョンの指定の仕方がパワーアップ。 $ nodebrew install latest # latest version $ nodebrew install v0.6.x # v0.6 latest $ nodebrew install v0.6 # v0.6 latest $ …
GitHub - hokaccha/nodebrew: Node.js version managerテストなしでメンテするのがつらくなってきたのでテスト書こうと思って、内部構造もテストしやすいようにかなり書き直したので自分的にはかなり大きいアップデートだけど使ってるほうはそんな変わらない…
Less & Sass Advent calendar 2011の14日目です。LESSにextendを実装したので紹介。LESSはSassに比べて機能が少ないです。その中でもよくLESSにはextendがないのが困るというのを聞くので実装してみました。SassのextendについてはAdvent Calendarでも後ほど…
つくってしばらく放置してたnodebrewを色々変更してみた。https://github.com/hokaccha/nodebrew主に wgetに対応(以前はcurlのみ) ワンライナーでインストールできるようにした ~/.nodebrew以下にnodebrew自信も置くようにした 環境変数(NODEBREW_ROOT)…
っていうのが新しく追加されてた。 // t1.js describe('mochaのテスト', function() { it('globalに定義', function() { foo = 'bar'; }); }); // t2.js var assert = require('assert'); describe('mochaのテスト', function() { it('fooがglobalに定義され…
JavaScript Advent Calendar 2011 (フレームワークコース)6日目です。この前のエントリーで予告したとおりmochaを使ったフロントエンドでのテストについて書きます。ちなみにこの前エントリー書いたときは0.2.0だったんですけどすでに0.3.2です。必要なファ…
JavaScript Advent Calendar 2011 (Node.js/WebSocketsコース)3日目のhokacchaです。Node.jsのテストフレームワーク、mochaについて書きます。mochaはTJが新しく作り始めているテストフレームワークです。ドキュメントを見ればできることは大体書いてありま…
function foo() { var e = { name: 'Error', message: 'hoge' }; throw e; } foo(); node.jsでこれ実行すると node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: hogeこうなるわけなんだけど、エラーの箇所がさっぱ…
5000件くらい一気にスクレイピングしたいってのがあって、jsdomでスクレイピングしてたんだけど、メモリの使用量がふくれあがってすぐメモリリークしちゃってどうしようかと思ったんだけど、ググったら同じ人いっぱいいて、window.close()しろって書いてあっ…
perlでいうと if (-t STDOUT) { say 'tty'; } else { say 'not tty'; } こういうことがやりたくてnodeだとこうするといけるみたい。 var tty = require('tty'); if (tty.isatty(1)) { console.log('tty'); } else { console.log('not tty'); } 1はSTDOUTね。…
curl http://api.twitter.com/1/statuses/user_timeline/hokaccha.json | node -e 'd = ""; process.stdin.resume(); process.stdin.on("data", function(c) { d+=c; }); process.stdin.on("end", function() { console.log(JSON.parse(d, null, " ")); });'…
なんか意外にもいけそうな気がしたのでgithubに移した https://github.com/hokaccha/nodebrew機能追加とか改善点があればどしどしお願いします。
Jxck's OutPut - Node.js の環境管理(version manager) について。 #nodejs_jpnvmってそんな難しいことしてないので自分が使いやすいのを書けばいいんじゃないかと思って書いてみた。 node package manager · GitHubperlだったらまあほとんどのサーバーに入…
express2.5からexpressコマンドでプロジェクトつくると./routesってディレクトリにルーティングが書かれるようになってる。規模が大きくなるほど煩雑になるので、ルーティングのファイルは分けたほうがいいと思うけど、これでも個人的にはやや微妙。 var exp…
やってみた。Travice CIにログインしたら自分のGithubのプロジェクトが一覧で出るのでCIしたいプロジェクトをONにする。んでgithubのプロジェクトに.travis.ymlおいてpushするだけ。超簡単。 http://travis-ci.org/#!/hokaccha/node-chain-tiny.travis.ymlは…
ほしかったので追加。eachはforEachのObject版。waitはjsdeferredのwaitとほぼ同じ(引数はms)こんな感じ。 var chain = require('chain-tiny'); // each chain(function(next) { next(null, { foo: 'bar', hoge: 'fuga'}); }) .each(function(key, val, ne…