2013-07-09 13 views
10

So habe ich die folgende Situation. Wenn ich einen Kompass nur von CLI verwende, funktioniert es genau und macht genau das, was benötigt wird. Ich laufe compass compile aus dem gleichen Ordner, in dem config.rb Datei befindet (in styles Ordner). Es enthält auch sass und css Verzeichnisse. Hier ist meine config.rb Datei:Kann nicht Grunt-Contrib-Kompass arbeiten

project_path = '.' 
css_dir = "css" 
sass_dir = "sass" 
images_dir = "../../data/images" 
javascripts_dir = "../scripts" 

output_style = :compressed 
environment = :development 
relative_assets = true 

Wenn ich versuche grunt dafür ich die folgende Konfiguration in Gruntfile.js verwenden zu verwenden:

compass: { 
    compile: { 
     options: { 
      basePath: 'app/src/styles', 
      config: 'app/src/styles/config.rb' 
     } 
    } 
} 

Der app Ordner und Gruntfile.js sind auf dem gleichen Niveau befinden. Wenn ich renne grunt compass ich die folgende Ausgabe sehen:

Running "compass:dist" (compass) task 
Nothing to compile. If you're trying to start a new project, you have left off the directory argument. 
Run "compass -h" to get help. 

Done, without errors. 

Wenn ich versuche, alle Optionen wie direkt angeben:

compass: { 
    compile: { 
     options: { 
      basePath: 'app/src/styles', 
      sassDir: 'app/src/styles/sass', 
      cssDir: 'app/src/styles/css', 
      imagesDir: 'app/data/images' 
     } 
    } 
} 

es macht den Job, aber der .sass-cache Ordner auf erstellt wird das Niveau von Gruntfile.js. Also ich denke, es gibt ein Problem mit basePath Option der Konfiguration.

Mache ich etwas falsch?


EDIT:
Der einzige Weg, schaffte ich es, damit es funktioniert, wie es soll config.rb Datei auf das Niveau von Gruntfile.js bewegt und unter Angabe der folgenden Optionen in ihm:

project_path = 'app/src/styles' 
css_dir = "css" 
sass_dir = "sass" 
images_dir = "../../data/images" 
javascripts_dir = "../scripts" 

output_style = :compressed 
environment = :development 
relative_assets = true 

Auch habe ich alle Optionen aus der "Gruntfile.js" entfernt, die diese Aufgabe betreffen. Immer noch nicht sicher, was hier vor sich geht.

+0

http: //blog.grayghostvisuals .com/css/bild-url / –

Antwort

3

Versuchen Sie, nicht die basePath im Grunt Config, das heißt:

compass: { 
    compile: { 
    options: { 
     basePath: 'app/src/styles', 
     config: 'app/src/styles/config.rb' 
    } 
    } 
} 

Schalten in:

compass: { 
     compile: { 
     options: { 
      config: 'app/src/styles/config.rb' 
     } 
     } 
    } 

Und auch Ihre Grunt Compass mit der --verbose Schalter laufen (grunt compass --verbose) zu sehen, was Dateien, die Grunt versucht zu verarbeiten.

Beachten Sie, dass alle Einstellungen, die Sie Ihren Optionen in der Grunt-Datei hinzufügen, die Einstellungen in Ihrer Datei config.rb überschreiben (oder erweitern).

Schauen Sie sich diese Seite an: https://github.com/gruntjs/grunt-contrib-compass um mehr Informationen über grunt-contrib-compass zu sehen. Sie haben Informationen über alle möglichen Optionen.

0

wenn Sie einen anderen Basispfad für Ihr Projekt als Ihre config.rb benötigen, können Sie den Pfad in config.rb einstellen (auch relativ)

Beispiel Konfig.rb

project_path = "../src/main/webapp/" 
http_path  = "./" 
css_dir   = "css" 
sass_dir  = "../library" 
images_dir  = "assets/images" 
fonts_dir  = "assets/fonts" 
javascripts_dir = "assets/js" 

... 

relative_assets = true 

Beispiel SCSS

.stylesheet-url { 
    content:stylesheet-url("style.css"); 
} 

.font-url { 
    content:font-url("font.woff"); 
} 

.image-url { 
    content:image-url("image.png"); 
} 

.generated-image-url { 
    content:generated-image-url("image2.png"); 
} 

Beispiel CSS

.stylesheet-url { 
    content: url('style.css'); 
} 

.font-url { 
    content: url('../assets/fonts/font.woff'); 
} 

.image-url { 
    content: url('../assets/images/image.png'); 
} 

.generated-image-url { 
    content: url('../assets/images/image2.png'); 
} 

Wir betreiben Compass 0.12.latest auf Win7 x64