プリコンパイル型のテンプレートエンジン、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でインストール)