未分類

hogan.jsを利用しようとしたら Cannot find module 'nopt'

プリコンパイル型のテンプレートエンジン、hogan.jsを試してみました。

nodeを使うようなのでまず brew で node をインストール。
$ brew install node

https://github.com/twitter/hogan.js をローカルにクローンして、binディレクトリにあるhulkコマンドを叩く・・・

hogan.js/bin$ ./hulk 
module.js:340
throw err;
^
Error: Cannot find module 'nopt'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object. (/Users/yusuke/Dropbox/opensource/hogan.js/bin/hulk:21:14)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)

noptというモジュールがないというエラーが出ました。
どうやらnodeではnpmというものを使ってモジュールの管理をするそう。
Issue #13: nopt · reid/node-jslint

以下のように npm 、それからhogan.jsが依存しているらしいnopt、mkdirpをインストールしたところ起動しました。

$ curl https://npmjs.org/install.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7882 100 7882 0 0 3907 0 0:00:02 0:00:02 --:--:-- 6361
tar=/usr/bin/tar
version:
bsdtar 2.8.3 - libarchive 2.8.3
install npm@1.1
fetching: http://registry.npmjs.org/npm/-/npm-1.1.57.tgz
0.8.6
1.1.57
cleanup prefix=/usr/local

All clean!

> npm@1.1.57 prepublish .
> npm prune ; make -j4 doc

sh: npm: command not found
make: Nothing to be done for `doc'.
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@1.1.57 /usr/local/lib/node_modules/npm
It worked
$ npm install nopt
npm http GET https://registry.npmjs.org/nopt/1.0.10
npm http 200 https://registry.npmjs.org/nopt/1.0.10
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-1.0.3.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.3.tgz
nopt@1.0.10 ../node_modules/nopt
└── abbrev@1.0.3
$ npm install mkdirp
npm http GET https://registry.npmjs.org/mkdirp/0.3.0
npm http 200 https://registry.npmjs.org/mkdirp/0.3.0
npm http GET https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz
npm http 200 https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz
mkdirp@0.3.0 ../node_modules/mkdirp
$ ./hulk

USAGE: hulk [--wrapper wrapper] [--outputdir outputdir] [--namespace namespace] [--variable variable] FILES

OPTIONS: [-w, --wrapper] :: wraps the template (i.e. amd)
[-o, --outputdir] :: outputs the templates as individual files to a directory

[-n, --namespace] :: prepend string to template names

[-v, --variable] :: variable name for non-amd wrapper

EXAMPLE: hulk --wrapper amd ./templates/*.mustache

NOTE: hulk supports the "*" wildcard and allows you to target specific extensions too

環境:
Mac OSX Mountain Lion(10.8)
node(v0.8.6、brewでインストール)