Herokuにheroku run bash
でログインし、npm install パッケージ名
を実行することは出来ませんでした。
ですが、質問にも記載しましたが、
WEB上ではnodeは使いませんが、nodeのビルドパックを入れて、何か設定ファイル(PHPだとcomposer.jsonのような)物を用意し
デプロイ時にインストールされるような形を取れるのかなと思い調べてみましたが分かりませんでした。
こちらを調べたところ、npmもpackage.jsonというものを作成し、インストールしたいツールを記載しておけば
composer同様、Herokuへのデプロイ時にnpm install出来ることがわかりました。
方法
ローカルのHerokuのアプリを作っているディレクトリで
npm init
を実行し、エンターを叩いてpackage.jsonを生成します。
次に、npm install --save パッケージ名
でインストール&package.jsonに追記させます。
そうすることで、npm install
を実行するだけでpackage.jsonに記載されたパッケージをインストールしてくれるようになります。
先ほどのnpm install --save パッケージ名
を実行すると、
package-lock.jsonというファイルと
node_modulesディレクトリが出来、node_modules/以下にパッケージファイルが入っています。
node_modulesディレクトリはcomposerで言うvendorと同じなので、.gitignore
で管理外にします。
/node_modules/*
を追記すればOKです。
そして、Herokuのwebサイトにログインし、「Setting→ Buildpacks」でheroku/nodejs
を追加します。
これでデプロイ時に、Herokuがnpm install
を実行してくれるようになります。
あとはここまでを通常のデプロイ同様、add&commitからのgit push heroku master
して
package.jsonなどをHerokuにアップしてデプロイすればOKです。
デプロイ時のメッセージにも以下のようにnpm install
してくれたような表示がされます。
remote: -----> Building dependencies
remote: Installing node modules (package.json + package-lock)
remote: audited 88 packages in 0.953s
remote: found 0 vulnerabilities
remote:
remote:
remote: -----> Caching build
remote: - node_modules
これで、Heroku側にツールが入ったので、無事に叶えたい動作を行えるようになりました。
見よう見まねなので、おかしい点もあるかと思いますが、勉強になりました。ありがとうございました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。