5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TitaniumのCLI環境はそのままにしながらAppceleratorStudioをインストール

Posted at

目的

NodeBrewでNode.jsを管理したままAppceleratorStudioを利用したい

普通にdmg形式でインストールしようとすると、
Node.jsとnodemoduleのappceleratorがインストーラに認識されないので、
普通にNode.jsとappcコマンドが/usr/local/配下にインストールされてしまいます

このままではNode.jsが2重管理になってしまうので気持ち悪いです
通常操作するターミナルではユーザディレクトリ以下のNode.jsですので、そこは一致させておきたいところ

環境

Mac OS X Yosemite (10.10.5)
Node (0.12.1)
NodeBrew (0.9.2)
PATH設定は~/.zshrc

AppceleratorStudio (4.4.0)

インストーラにNode.jsを認識させる

インストーラーはどこを見てNodeが入っていないと判断するのでしょうか?
とりあえずググります
同じようなことをしている先人はやはりいらっしゃるようです

umi-uyuraさんの
Appcelerator CLIと、Appcelerator Studioを(無理やり)インストールした

こちらではndenvとanyenv環境で、
TitaniumStudioがAppceleratorStudioになってから
2〜3ヶ月といった位の時期のバージョンをインストールする記事みたいです

対してこちらは、NodeBrew環境で
現在(16/1/3)最新バージョンの4.4.0をインストールします

認識される配置場所は以下のようになります

  • [usr]
    • [local]
      • [bin]
        • node
        • npm
        • appc
        • appcelerator
      • [lib]
        • [node_modules]
          • [npm]
          • [appcelerator]

この配置にするには、

# モジュール配置ディレクトリを作成
$ mkdir -p /usr/local/lib/node_modules

$ export distbinpath=/usr/local/bin
$ export distlibpath=/usr/local/lib/node_modules

# シンボリックリンクを貼ってインストーラに認識させる
$ ln -is $HOME/.nodebrew/current/bin/npm $distbinpath
$ ln -is $HOME/.nodebrew/current/bin/node $distbinpath
$ ln -is $HOME/.nodebrew/current/bin/appc $distbinpath
$ ln -is $HOME/.nodebrew/current/bin/appcelerator $distbinpath

# node_modules配下のモジュールはディレクトリなのでまるごとリンクを貼る
$ ln -Fis $HOME/.nodebrew/current/lib/node_modules/npm $distlibpath
$ ln -Fis $HOME/.nodebrew/current/lib/node_modules/appcelerator $distlibpath

# 動作チェック
$ $distbinpath/node -v

終わったらインストーラーを起動してみましょう
インストールで認識されると思います
ここまでで、インストールだけは終了です

まだ終わっていない...

私の場合はこれで終わりではありませんでした

TitaniumStudioの時は起動時にログイン認証などを行います
その時点で何かあるだろうなと思っていました

起動したら、「Validating...」とか言い始めて
待ってたら管理者権限を要求してきました

これは...
と思いながらとりあえずパス通して起動までいきました

そしてAppceleratorStudioのメニューからターミナルを表示して

# StudioのターミナルでのPATHからバージョンを確認
$ node -v

と打ったらなんと、バージョンが0.12.7に上がっている!?

$ which node

と打つと、/usr/local/bin/nodeとなっており、シンボリックリンク先じゃない
そう、nodeの上書きをされていました

その後、シンボリックリンクを貼り直してみても再起動でまた上書きされてしまうなど、
試行錯誤していました

じゃあ、要求してるバージョンてどこ基準なの?って気になって
AppceleratorStudio4.4.0のReleaseNotes

Update Studio to check for minimum Node.js version 0.12.7 and will install version 4.1.0 on clean installs

と書かれており、これか!と

StudioのNode.js最小バージョンは0.12.7に変更され
チェックによりインストールされるが、
Node.js自体がクリーンインストールの場合は4.1.0となる

ってことだと思うけど、上書く場合は0.12.7をいれるとは書いてない...
そもそもバージョンを分岐させる意味とは...

最終的には、NodeBrewでv0.12.7を新規でインストールし直しました

$ nodebrew install-binary v0.12.7
$ nodebrew use v0.12.7
$ npm install -g appcelerator
# シンボリックリンクにはバージョンに関するパスは混じっていないので貼り直しは不要

この状態で再起動すると、
バリデーションも問題なかったらしく、そのまま起動され、
ターミナルでもバージョンは一致するようになりました

所感

まさかインストール時に問題ないのに起動時に新しいNodeがインストールされるとは思いませんでした

というか、AppceleratorStudioのターミナルの$SHELL変数はZSHなのに
なぜ設定ファイルを読まないのか...
起動している時のバリデーションのnode参照パスがどうなってるか気になります

それと、作業時にはtitanium-code-processorのシンボリックリンクも貼っていたのですが、
Nodeのバージョン変えてから無くても問題ないような気がしてインストールしない状態でいましたが、
問題なさそうな気配がしています
GUIの必須インストール系の画面も出てこないので、気にしないことにします

それと、appceleratorをnpmで入れると、

$ npm list -g

npm ERR! invalid: chalk@0.5.0 /Users/naoya/.nodebrew/node/v0.12.7/lib/node_modules/appcelerator/node_modules/chalk

した時にエラーが出てきてきもいですがおそらくこれは自分のせいではないような気がします(依存解決の指定先が古い?)

仕事マシンは低スペック過ぎてIDEを使う気すら起きずにSublimeText3を使っていました
というかあの頃はTitaniumStudioだったので、ti,alloyとかもうちょっと面倒そう

今回、いい加減IDE触っておこうということで、プライベートのマシンで試してみました
いやー、ブレイクポイントってすばらしい...
ログデバッグで大分頑張ってたので...

まあ、SublimeTextも大分慣れるといいんですけどね、マルチカーソルとか気持ちいいので
今後の基本はSublimeText&iTerm2でコーディング・ビルド進めて、
AppceleratorStudioではデバッグという感じで場面ごとに使い分けていきたいですね

以上です、お疲れ様でした!

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?