web-dev-qa-db-ja.com

HerokuにdevDependenciesをインストールする

変更を加えるたびにビルドフォルダーをプッシュする必要がないように、アプリをプッシュした後にHerokuでアプリをビルドしたいと思います。ただし、herokuはpackage.jsonとgrunt(私のビルドツール)からの依存関係のみをインストールし、そのすべてのコンポーネントはdevDependenciesにあります。私は、彼らが所属する場所にそれらを維持したいと思います。ここでの回避策は何ですか?

45
ionox0

Herokuはデフォルトで、devDependenciesの下の開発依存関係を無視して、本稼働依存関係のみをインストールします。

Npm製品変数をfalseに設定すると、トリックを実行できます。

heroku config:set NPM_CONFIG_PRODUCTION=false

詳細は Heroku Node.js Support page を参照してください。

79
Edo

保持NPM_CONFIG_PRODUCTIONtrue 、私は 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;",
   ...
},

(最後に)私のために働きました。

11
PixnBits
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

そのままにしておいてください。私はもっ​​と良い解決策が欲しいです。

1
David Fridley

依存関係をアンインストールするには、これらを行う必要があります

  1. Heroku-prebuildを追加します。

    スクリプト ":{..." heroku-prebuild ":" npm install "}

  2. 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"

0
otoloye