0

コンパス プロジェクトで、(特定のファイルへの) 異なる .css 出力パスに問題があります。

次のようなディレクトリ ツリーがあるとします。

 /
 ..Fonts
 ..Folder
 ..Images
 ..Sass
   .._mixins.scss
   ..[other_stuff]
 ..Styles
 ..config.rb

これは私のconfig.rbです:

http_path = "/"
css_dir = "Styles"
sass_dir = "Sass"
images_dir = "Images"
javascripts_dir = "Scripts"
fonts_dir = "Fonts"

output_style = :nested
relative_assets = true
color_output = false

ゴール

「フォルダー」ディレクトリ内でsassを使用する必要があります。つまり、example.scssファイルを「フォルダー」内のexample.cssにコンパイルする必要があります。しかし、「Sasss/_mixins.scss」ファイルで定義された相対 URL ヘルパーといくつかのミックスインでコンパスを使用する必要があります。

問題

問題は、example.scssscss の出力パスがconfig.rb( Styles) 内に指定されているため、別の出力パスを指定できないことです。config.rbわかりましたので、次のように「Styles」ディレクトリから「Folder」ディレクトリにコンパイルした後にexample.cssを移動するために、ルビーコードを追加してみました:

require 'fileutils'
on_stylesheet_saved do |file|
  if File.exists?(file) && File.basename(file) == "example.css"
    puts "Moving: #{file}"
    FileUtils.mv(file, File.dirname(file) + "/../Folder/" + File.basename(file))
  end
end

しかし、現在、relative image-url() は「Styles」ディレクトリでコンパイルされているため、正しく機能しません。したがって、url は「Folder」ディレクトリではなく、このディレクトリに対して相対的です。

解決?

私の質問は次のとおりです。これを達成するための最良の方法またはハックは何ですか?

4

1 に答える 1

0

唯一の適切な解決策は、Galleria サブプロジェクトを別のプロジェクトに移動することです。実際には 2 つのプロジェクトがあるのに、なぜそれらを 1 つにまとめようとしているのですか? 代わりに、それらを分離したままにして、展開中にまとめてください。

または、サブプロジェクトから Compass 拡張機能を作成し (その構造と変更量が許す場合)、それをインポートして (直接または mixin 経由で) メイン プロジェクトに必要なものを挿入します。

汚い解決策の 1 つは、シンボリック リンクを使用することです。

cd Styles
ln -s ../Folder Folder

そして作成しますSass/Folder/foo.sass

しかし、これはcompass compile気が狂い、毎回プロジェクト全体を再作成します (変更されたファイルのみを上書きするのではなく)。

反対方向のシンボリック リンクを作成することもできますが、Web サーバーでシンボリック リンクの追跡が許可されていることを確認する必要があります

于 2013-07-01T17:22:56.527 に答える