目的
NodeBrewでNode.jsを管理したままAppceleratorStudioを利用したい
今のAppceleratorStudio4.4とNodeBrew、Zsh環境で実践してみた。後でまとめよう。#titaniumjp を使ってくならnvmやenv系は使うだろうから意識せずに使えるようになってほしいものだけど。 https://t.co/joTH6ENWQx
— Opera (@opera627) 2015, 12月 30
普通に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]
- [node_modules]
- [bin]
- [local]
この配置にするには、
# モジュール配置ディレクトリを作成
$ 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ではデバッグという感じで場面ごとに使い分けていきたいですね
以上です、お疲れ様でした!