Help us understand the problem. What is going on with this article?

TypeScriptなMeteorプロジェクトをHerokuで動かす方法

More than 3 years have passed since last update.

はじめに

最近、Meteor公式がGalaxyというMeteorプロジェクトのデプロイ&運用サービスを始めました。
ただ、価格情報を見れば分かるんですが、お試し気分ではなかなか手が出ないお値段設定です。

そこでHerokuです。Herokuは1日のうち8時間スリープに目をつぶれば無料で使えます。
24時間ずっと起動させておきたい場合は、hobby Planにすれば、その制約もなくなります(2015年10月23日現在で月額7ドル)。
さらにheroku標準では独自ドメインでSSL対応させる際に普通月額20ドル(2015年10月23日現在)かかりますが、CloudFlareなどのサービスを使えば実は実質無料でSSL対応できます。
(このCloudFlareを使ったSSL対応についても、そのうち記事書きましょうかね? ちなみにこの場合、SSLはherokuapp.comドメインでのデフォルトのものを使うことになります。閑話休題。)

すでに、 通常のMeteorプロジェクトをHerokuにデプロイする良記事がありましたので、リンクさせていただきます。基本はこちらの記事のとおりにやればOKです

herokuにMeteorで作成したアプリケーションをデプロイする

(→2015/10/23時点で、この記事で紹介されているbuildpackではうまくいきませんでした。次に、私がいつも使っている https://github.com/AdmitHub/meteor-buildpack-horse を試したところ、イイ線いってたんですが、悲しいかな。現在のMeteor1.2.0.2ではECMAScript2015のコードが混じっていると、開発時は問題ないがデプロイ時(つまり、Productionモード時)にminifyがエラーでコケるという問題があり、デプロイ途中で失敗。じゃあminifyさせなきゃいいじゃん! ということで、https://github.com/AdmitHub/meteor-buildpack-horse をフォークしてminifyしないバージョン https://github.com/emadurandal/meteor-buildpack-horse を一時しのぎとして作りました。とりあえず、2015/10/23時点では私のこのbuildpackをお使いください。)

しかし、TypeScriptを使ったMeteorプロジェクトの場合は、この手順だけだとデプロイに失敗します。Herokuがtscコンパイラを見つけられないためです。

解決策

まず、前述で紹介した記事の通りに作業を進めます。(ただし、buildpackだけは私のhttps://github.com/emadurandal/meteor-buildpack-horse を使うように読み替えてください)

この時点ではまだ、デプロイに失敗してしまうのですが、さらに以下の手順を行えば、TypeScriptを使ったMeteorプロジェクトも動くようになります。

1) meteorhacks:npmをインストールします。

$ meteor add meteorhacks:npm

2) Meteorプロジェクトフォルダ直下に、以下の内容のpackages.jsonを配置します(TypeScriptのバージョンはお好みで)。

{
  "typescript": "1.6.2"
}

3) 一度、ローカルでMeteorプロジェクトを実行します(この時に自動生成されるファイルが、Herokuにデプロイするときに必要なため)。

$ meteor

4) gitリポジトリに、本件で作られた全てのファイルをコミットします。

5) herokuにデプロイを行います。

$ git push heroku master

通常のMeteorプロジェクトより、若干時間がかかりますが、デプロイに成功するはずです。

さいごに

いかがでしょうか。Meteor 1.2から標準でECMAScript2015に対応し、クラスなども使えるようになったため、TypeScriptを使うまでもない、というケースもあるかもしれません。
しかし、だんだんプロジェクトが大規模になってくると、TypeScriptの必要性は増してきます。
ちなみに私は、Meteor & TypeScript & Riot.jsという組み合わせで開発しています。Riot.jsもイイヨーw

まぁそれはともかく、みなさまも良いMeteor & TypeScriptライフをお過ごしください^^/

※2015/10/23現在、すでに述べたとおり、minifyの問題がありますが、そのうちMeteor本家がこの問題を解決してくれるでしょう。将来のアップデートを待ちましょう。「待ってらんねぇ!」という方、minifyしないという回避策を許容できる方のみ、私のbuildpackをお試しください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away