2016-07-22 23 views
2

Nachdem am documentation for render_with_sourcemap suchen (und leider nicht irgendein Beispiel verwendet hierfür zu finden), war ich unter dem Eindruck, dass die folgenden funktionieren sollte:So verwenden Sass :: Engine render_with_sourcemap

@source_dir = './sass/' 
@target_dir = './css/' 
@output = Sass::Engine.new(File.read(@source_dir + 'style.scss'), { 
     cache_location: @source_dir + '.sass-cache', 
     style: :compressed, 
     syntax: :scss 
}).render_with_sourcemap(@target_dir + 'style.css.map') 

jedoch die Fehler ich erhalte ist:

Error generating source map: couldn't determine public URL for the source stylesheet. (Sass::SyntaxError) 
No filename is available so there's nothing for the source map to link to. 

Es funktioniert, indem einfach machen statt render_with_sourcemap (die keinen Parameter benötigt), so dass ich führte zu glaube mein Dateiname ist falsch - aber ich sehe nicht, was ich falsch mache. Ich versuchte auch /style.css.map, ./style.css.map und @target_dir + style.css.map, alle mit keinem Erfolg (den gleichen Fehler erhalten)

Antwort

1

Mit Blick auf die source code of the Engine class, fand ich, dass der Fehler von _render_with_sourcemap ausgelöst wird, wenn @options[:filename] ist Null - Initialisierung der Funktion mit dieser Option führte erfolgreich zum Erstellen der Quellkarte.

Der folgende Code ist der gesamte Code benötigt, um eine CSS-Datei und sourcemap für zukünftige Referenz

@source = './sass/' 
@target = './css/' 
@output = Sass::Engine.new(File.read(@source + 'style.scss'), { 
    cache_location: @source + '.sass-cache', 
    filename: 'style.css', 
    style: :compressed, 
    syntax: :scss 
}).render_with_sourcemap(@target + 'style.css.map') 

# write css to file 
File.write(@target, @output[0]) 

# write sourcemap to file 
sourcemap_options = { 
    :css_path => @target, 
    :sourcemap_path => @target + 'style.css.map' 
} 
File.write(@target + 'style.css.map', @output[1].to_json(sourcemap_options)) 
zu erzeugen
0

Selbst wenn es nicht dokumentiert ist, sollten Sie die Dateiname Variable einstellen. Danach sollten Sie ein Quellkartenobjekt erhalten.