Railsからnpmを使ってフロントエンドのライブラリをインストールして使うまで。
asset pipelineフレンドリーで使うための方法で、browserifyとかwebpackとか言いたい人は別途検討したほうがいいかもしれない(そうでないかもしれない)。
package.jsonを作る
railsプロジェクト以下にpackage.json
を作りましょう。
{
"name": "project name",
"version": "1.0.0",
"private": true
}
ポイントは"private":true
を書いておくことです。
これを書かないと、ライセンスやオーナーを書けと怒られます。
オープンソースのプロジェクトでもない限り、ライセンスもオーナーも書く必要なんてないですよね?
ライブラリのインストール
コマンドラインから通常、npmを使う感覚でインストールしてあげればいい。
npm install --save [library]
--save
とオプションをつけておくと、インストール後にpackage.json
を自動で更新してくれる。
インストールパッケージはpackage.json
に書いておいて、npm install
するだけでもいい。
Railsの設定
Bowerを使う時とおなじ感覚でconfig/initializers/assets.rb
を編集してあげれば良い。
Rails.application.config.assets.paths << Rails.root.join('node_modules')
assetの書き方
node_modules
以下のパスを見ながらrequire
してあげる。
例えば、jqueryをインストールしたなら、node_modules
以下は下記のようになっている(はず)。
node_modules/
jquery/
dist/
jquery.js
jquery.min.js
jquery.min.map.js
src/
.
.
.
使いたいのはjquery/dist/jquery.js
なので、このパスをapp/assets/javascripts
の中のjsファイルでrequireする。
//= require jquery/dist/jquery
デプロイ
デプロイにcapistranoを利用していない場合は、自前でrakeタスクとか書きましょう。
capistranoを利用している場合は、capistrano-npmというgemがあるので利用するといいかも。
細かい設定などを考えないならgemをインストールしてCapfile
でrequire
してあげるだけで、
デプロイ時にnpm installしてくれるようになる。
group :development # 環境は適宜変えるんだよ
+ gem 'capistrano-npm'
end
+ require 'capistrano-npm'
ただし、そのまま使うと、releaseディレクトリ直下にnpm installされるんで本格的に使うには色々いじってあげないといけません。
npmに登録されるライブラリは新しいなんて、噂に聞くけどフロントエンドのものに限定すれば、そんなこともないように見える。
bowerかnpmか?というところの判断は、スポンサーの存在で決めるのが良いのかなぁと考えています。
スポンサーという点においては、bowerが個人の寄付で成立しているのに大して、npmはnpm.incという企業がスポンサーになっているのでnpmのほうが有利であるように感じる。