PureScriptのビルドツールのpulpコマンドをローカルインストールしたら動かない件
purescriptのドキュメントを読んでみると、基本グローバル
インストールになっているけど、Elm等と同様にプロジェクト
ごとに使ってみようと思い、あえてプロジェクトルートに
インストールしてみたら、purescriptとpsc-packageは問題
ないけど、pulpだけ動かない。
もしかしたら、pulpだけ動くコマンドが違うのかもしれない
と思ってドキュメントを読んでるけど、今のところ、よく
わからないので、情報を整理してみる(ΦωΦ;)
[手順]
0. nvmでNode.jsをインストール。
1. npm install <package_name> で試す。
1-1. PureScriptを試すプロジェクトディレクトリを作成。
% mkdir purs-example
1-2. 最小限のpackage.jsonを作成(空でもいいらしい)。
% cd purs-example
% npm init --y
※ --saveしなくても今はデフォルトになってるらしい。
※ dependenciesにnpm install <package_name>でインストールされた
パッケージが設定されるらしい。↓
1-3. purescript, pulp, psc-packageをnpm installでインストール。
% npm install purs pulp psc-package
./node_modules/.bin は以下。
ここで、psc-packageが .exe になってるが、Manjaroにインストールしている。
1-4. 1-3でインストールしたバージョンを確認。
pulpの時に、purs (purescriptのコンパイラ) が見つからないと言われている。
どうも、プロジェクトルートの node_modules/.bin 以下を見てないっぽい。
2. npm install <package_name> --save-dev で試す。
2-1. --save-dev を検証するディレクトリを作成。
% mkdir purs-test
2-2. 最小限のpackage.jsonを作成。
% cd purs-test
% npm init --y
2-3. プロジェクトルートにpurs, pulp, psc-packageをインストール。
% npm install purs pulp psc-package --save-dev
※ --saveがデフォルトになったということで、--save-devを
実行すると、devDependenciesにそれぞれ書き込まれる。
1-3, 1-4を同様に試すが同じ結果のため省略。
3. グローバルインストール
3-1. purescript, pulp, psc-package をグローバルインストール。
% npm install -g purescript pulp psc-package
3-2. 各コマンドのバージョンを確認。
※上記より、pulp はpursの実行形式ファイルをローカルの ~/node_modules/.bin/
じゃなくて、/node/versions/bin 以下を無条件に探しに行ってるということなのか?
ということは、少なくともpurescriptはグローバルにインストールする必要が
あるらしい。
3-3. プロジェクトを作成。
% mkdir purescript-hello
% cd purescript-hello
3-4. pulpとpsc-packageで依存ライブラリをインストール。
3-5. ビルドして実行。
% pulp run
(詳細略)
3-6. ~/workspace/purescript-hello/src/Main.pursを開き、sailor! を world! に修正。
3-7. 再ビルド。
% pulp build
※ちなみに再ビルド後に実行。
% pulp run
3-8. テスト実行。
% pulp test
[わかったこと]
上にも書いてるけど、pulpは単純にpursを検索している訳ではなく
グローバルにインストールしたpursを見に行ってるので、ローカル
インストールする場合は少なくともpursはグローバルである必要が
あるっぽい。
そして、psc-packageは何で.exeがインストールされてるんだろう?
ってのが謎すぎる。Windows用バイナリだと思うんだがなー(Φω|
[参考サイト]