変更を加えるたびにビルドフォルダーをプッシュする必要がないように、アプリをプッシュした後にHerokuでアプリをビルドしたいと思います。ただし、herokuはpackage.jsonとgrunt(私のビルドツール)からの依存関係のみをインストールし、そのすべてのコンポーネントはdevDependenciesにあります。私は、彼らが所属する場所にそれらを維持したいと思います。ここでの回避策は何ですか?
Herokuはデフォルトで、devDependencies
の下の開発依存関係を無視して、本稼働依存関係のみをインストールします。
Npm製品変数をfalse
に設定すると、トリックを実行できます。
heroku config:set NPM_CONFIG_PRODUCTION=false
詳細は Heroku Node.js Support page を参照してください。
保持NPM_CONFIG_PRODUCTION
true
、私は Herokuのスクリプトフック を使用しました:
"scripts": {
...
"heroku-prebuild": "export NPM_CONFIG_PRODUCTION=false; export NODE_ENV=; NPM_CONFIG_PRODUCTION=false NODE_ENV=development npm install --only=dev --dev",
"heroku-postbuild": "export NPM_CONFIG_PRODUCTION=true; export NODE_ENV=production;",
...
},
(最後に)私のために働きました。
scripts": {
...
"heroku-prebuild": "npm install --only=dev"
}
これで十分です。 heroku-prebuildに関するヒントを提供してくれたPixnBitsに感謝します。また-私の問題はバベルでした。私は最終的にbabel-preset-es2015およびその他のプリセットを依存関係に移動しました。
更新:8/11/2017私はこれで問題を抱えています。状況が変わったようです(npmは5.3になりました)。しかし、私が見ているのは、heroku-prebuildスクリプトが実行され、その後、ポストインストールスクリプトが実行されていることです(ただし、私は-devのみをインストールしようとしていました)。
したがって、私が機能しているのは単に実行することです:
heroku config:set NPM_CONFIG_PRODUCTION=false
そのままにしておいてください。私はもっと良い解決策が欲しいです。
依存関係をアンインストールするには、これらを行う必要があります
Heroku-prebuildを追加します。
スクリプト ":{..." heroku-prebuild ":" npm install "}
Add heroku-prebuild:
scripts": { ... "heroku-prebuild": "npm install" }
これをビルドスクリプトで使用できます"build": "npm install --only=dev"
さらに多くの操作を実行する必要がある場合に備えて、たとえば、コードをbabelでトランスパイルする場合は、次のようにすることができます"build": "npm install --only=dev && babel src --out-dir dist --copy-files"