2012-04-14 10 views
9

私はブートストラップのような外部依存関係があるとしましょう。私はそこからいくつかのLESSをインポートしたいと思います。その方法で私のコードにBootstrapのミックスインを使うことができます。流行の外部依存関係(ブートストラップのようなもの)

Meteorはすでにツリー内のすべてのLESSをコンパイルして連結しています(右か?)。LESSディレクトリをコピーしてからしばらくして手動で更新するだけでは解決できません。実際には、デフォルトのLESSディレクトリでは、すべてのLESSソースファイルが出力に2回表示されるようです:1回はbootstrap.lessにインポートされるため、1回はファイル自体のためです。

流星にいくつかの経路を無視させる方法はありますか? public/音が鳴ります。しかし、私は本当にブートストラップレポを提供したくありません。

さらに、それはLESSのために修正されるかもしれませんが、ブートストラップでJS拡張を扱う適切な方法は何ですか?

答えて

3

私は潜在的な解決策を考え出しました。流星は、それでは、その範囲外の依存関係を入れてみましょう...そのディレクトリ内のすべてのものをバンドルしたい:)

次のディレクトリ構造を持つ:

. 
|-- ext 
| `-- bootstrap 
`-- myapp 
    |-- .meteor 
    `-- ... 

私LESSファイルでは、私は次の操作を行います

@BOOTSTRAP: "../../ext/bootstrap/less"; 
@import "@{BOOTSTRAP}/reset.less"; 

これはまだ動作しませんが、これはa LESS bugに起因すると思います。

残念ながら流星によって生成されるエラーメッセージは、ここで完全に役に立たないです:

[[[[[ ~/Code/igl/igl ]]]]] 

Running on: http://localhost:3000/ 
Errors prevented startup: 
Exception while bundling application: 
ReferenceError: err is not defined 
    at /usr/local/meteor/packages/less/package.js:33:62 
    at [object Object].add_file (/usr/local/meteor/app/lib/bundler.js:193:5) 
    at /usr/local/meteor/app/lib/bundler.js:97:16 
    at Array.forEach (native) 
    at Function.<anonymous> (/usr/local/meteor/app/lib/third/underscore.js:76:11) 
    at /usr/local/meteor/app/lib/bundler.js:96:11 
    at Array.forEach (native) 
    at Function.<anonymous> (/usr/local/meteor/app/lib/third/underscore.js:76:11) 
    at Object.add_files (/usr/local/meteor/app/lib/bundler.js:95:9) 
    at [object Object].on_use (/usr/local/meteor/app/lib/packages.js:136:11) 
Your application is crashing. Waiting for file change. 
+1

FWIWを私はちょうど策このハッキング終わった:*/'猫PATH_TO_BOOTSTRAP /以下を| grep -v import | egrep -v \^//> bootstrap-concat.less'を実行します。醜いですが、魅力を働かせて私にすべてをインポートさせてくれます:) – lvh

+1

最新の流星の最新情報は、あなたの問題を解決するかどうかは不明ですが、流星の更新を行い、あなたのアプリにTwitterのブーストラップ。 – climboid

+0

LESSを使うメリットは簡単なカスタマイズです。メテオブートストラップパッケージがLESSから動的にコンパイルされるかどうかは分かりますか? –

0

私の経験から、それは直接流星プロジェクトのブートストラップLESSファイルを含めるように悪い考えです:

  • それMeteorで変換してブラウザで取り込む必要があるため、開発環境が大幅に遅くなります。
  • コアブートストラップパッケージに明示的に依存するサードパーティパッケージの依存関係を満たしていません。そのうちの1つを追加すると、2つのブートストラップがプロジェクトに追加されます。
  • パッケージのリソースがプロジェクトファイルよりも先に読み込まれます。ブートストラップを拡張する外部パッケージがある場合、スタイリングはブートストラップの前にロードされます。
  • すべてのインポートの名前を.lessimportと変更すると、新しいブートストラップのリリースに追いつくことが難しくなります。
  • メテオによってブートストラップのjavascriptファイルがロードされる順序(アルファベット順)が正しくないため、ファイルの名前を変更することでしか修正できないJavascriptエラーが発生します。

プリコンパイルされたディストリビューションか、ブートストラップGitリポジトリの独自のクローンからカスタムブートストラップMeteorパッケージを生成するためのシェルスクリプトを作成しました。

あなたは、使用情報と一緒に、ここでそれを見つけることができます: https://github.com/wojas/meteor-package-bootstrap

関連する問題