6

クライアント側の依存関係を管理するためにbowerを使い始めたところです。すべてのファイルを にインストールするように Bower を設定しました/vendor/assets/components

次に、実行bower installしてファイルを評価し、bower.jsonすべての依存関係をインストールします

#/bower.json

{
  "name": "My-App",
  "dependencies": {
    "angular": "1.0.8",
    "bootstrap": "3.0.0"
  }
}

最後に、読んだチュートリアルの指示に従って、コンポーネント ディレクトリを GIT から削除しました。

#.gitignore

#...
# Ignore all stuff manged by bower
/vendor/assets/components

したがって、プロジェクトにはこれらのアセットがスラッグに含まれていないため、bower installインストールするには実行する必要があります。

これは、プロジェクトから実際の宝石を分離することが賢明であるのと同じように、私には賢明に思えます。また、12 要素アプリの原則に従い、依存関係を明示的に宣言して分離します。

ただし、依存関係を除外すると、アセットのコンパイルが停止します...

ただし、Heroku にプッシュすると、アセットがまだ追加されておらず、スプロケットが評価しようとすると、アセットのプリコンパイルが失敗します。

#application.css.scss
/* ...
*= require bootstrap/dist/css/bootstrap
*= require_self
*= require_tree .
*/

bootstrap/dist/css/bootstrapbower はまだ何もインストールしていないため、何も見つからないことがわかります。

考えられる解決策 - package.json を使用してインストール後のスクリプトを実行する

次の内容のファイルを追加することを提案するこのチュートリアルに従いました。package.json

"dependencies": {
    "bower": "0.6.x"
},
"scripts": {
    "postinstall": "./node_modules/bower/bin/bower install"
}

ただしbower install、インストール後のスクリプトとしてではなく、プッシュ後、アセットのコンパイル前のスクリプトとして実行する必要があります。Heroku が Rails アプリ用の npm プリプロセッサを実行するかどうかもわかりません

bower install を実行する方法を理解するか、単にファイルを GIT に含めるかを理解する方がよいでしょうか?

これには 2 つの解決策があります。最初の最も簡単な方法は、単純にbower installローカルで実行し、ファイルを GIT に含めることです。これは大したことではありませんが、12 Factor App の原則に固執したいと思います。

2 つ目の解決策は、アセットのプリコンパイルが発生するbower installに、npm を起動して Herokuで実行する方法を見つけることです。

これは簡単な方法で実行可能ですか、それとも単純にバウアー アセットをローカルでコンパイルする方がよいでしょうか?

あとがき

最終的に私の結論は、単純にbower installローカルで実行し、ファイルを GIT に含めることでした。12要素の原則は、これが正しいルートではない可能性があることを示唆していますが、実際にはコストがかかることはなく、カスタムビルドパックの複雑な複雑さに入るよりも、それを好んだ.

4

1 に答える 1

3

ddollar の multi-buildpackを使用してみてください。2 つのビルドパックをインストールすると、nodejs がインストールされた後で ruby​​ ビルドパックがインストールされる前に、postinstall スクリプトを実行できるという追加の利点が得られます。bower installこれにより、アセットがプリコンパイルされる前に を使用してアセットをプルダウンできます。

Heroku + Rails + Bower のシナリオを処理する方法についてのヒントをまとめました。

https://coderwall.com/p/6bmygq

于 2013-11-08T22:16:36.187 に答える