Ruby on RailsアプリケーションでNode.jsのパッケージを利用するためには、いくつかの設定が必要です。 この設定方法や、Capistranoとの連携などについて書きます。

動作環境

この記事の内容は、次の各バージョンで動作を確認しています。

  • Ruby on Rails 5.0.0
  • Node.js 6.3.0
  • npm 3.10.3

設定方法

1. package.jsonを生成する

まだプロジェクトでpackage.jsonを利用していない場合は、次のコマンドでこれを生成します。

$ npm init -y

2. パッケージをインストールする

プロジェクトで利用するパッケージをインストールします。

本番環境でも使うものは--saveオプション、開発環境のみで使うものは--save-devオプションでインストールします。

$ npm install --save xxx
$ npm install --save-dev xxx

3. Railsの設定ファイルを変更する

インストールしたパッケージはnode_modules下に配置されます。

このディレクトリは、そのままではRailsアプリから参照されません。 これを参照するには、次の設定を行ないます。

config/initializers/assets.rb:

Rails.application.config.assets.paths << Rails.application.config.root.join('node_modules')

4. assetsから参照する

以上の設定で、assetsからNode.jsパッケージを参照できるようになります。

たとえば、以下はprimer-cssを参照している例です。

app/assets/stylesheets/application.scss:

@import 'primer-css/index.scss';

5. .gitignoreを設定する

パッケージは開発/本番環境それぞれにおいてインストールするので、node_modulesディレクトリはGitの管理から外します。

.gitignore:

node_modules

Capistranoと連携する

capistrano-npmを導入すると、Capistranoでのデプロイ時に自動でNode.jsパッケージをインストールしてくれます。

注意

npmのバージョンが2以下の場合、パッケージの依存するサブパッケージがnode_modules下に配置されません。 この場合、Railsアプリから正しく参照できなくなってしまいます。

パッケージ参照の挙動がおかしい場合は、npmのバージョンを確認しましょう。