haiju's 開発メモ

開発に必要な情報を自分用にメモ

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>でインストールされた

 パッケージが設定されるらしい。↓

f:id:haiju:20190306040311p:plain

1-3. purescript, pulp, psc-packageをnpm installでインストール。

% npm install purs pulp psc-package

 ./node_modules/.bin は以下。

f:id:haiju:20190306024131p:plain

ここで、psc-packageが .exe になってるが、Manjaroにインストールしている。

1-4. 1-3でインストールしたバージョンを確認。

f:id:haiju:20190306025010p:plain

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

        f:id:haiju:20190306044235p:plain

※ --saveがデフォルトになったということで、--save-devを

 実行すると、devDependenciesにそれぞれ書き込まれる。

1-3, 1-4を同様に試すが同じ結果のため省略。

3. グローバルインストール

3-1. purescript, pulp, psc-package をグローバルインストール。

% npm install -g purescript pulp psc-package

3-2. 各コマンドのバージョンを確認。

f:id:haiju:20190306053123p:plain

※上記より、pulp はpursの実行形式ファイルをローカルの ~/node_modules/.bin/

 じゃなくて、/node/versions/bin 以下を無条件に探しに行ってるということなのか?

 ということは、少なくともpurescriptはグローバルにインストールする必要が

 あるらしい。

3-3. プロジェクトを作成。

% mkdir purescript-hello

% cd purescript-hello

3-4. pulpとpsc-packageで依存ライブラリをインストール。

f:id:haiju:20190306055809p:plain

3-5. ビルドして実行。

% pulp run

(詳細略)

        f:id:haiju:20190306060408p:plain

3-6. ~/workspace/purescript-hello/src/Main.pursを開き、sailor! を world! に修正。

f:id:haiju:20190306060702p:plain

3-7. 再ビルド。

% pulp build

※ちなみに再ビルド後に実行。

% pulp run

3-8. テスト実行。

% pulp test

[わかったこと]

 上にも書いてるけど、pulpは単純にpursを検索している訳ではなく

グローバルにインストールしたpursを見に行ってるので、ローカル

インストールする場合は少なくともpursはグローバルである必要が

あるっぽい。

そして、psc-packageは何で.exeがインストールされてるんだろう?

ってのが謎すぎる。Windows用バイナリだと思うんだがなー(Φω|

[参考サイト]

github.com

github.com

github.com

psc-package.readthedocs.io

qiita.com

phiary.me

コマンドパスを自動で通し npm install -g しない

qiita.com

qiita.com

qiita.com