@Override protected void sendResource(URL resourceUrl, RouteContext routeContext) throws IOException { try { // compile sass to css log.trace("Send css for '{}'", resourceUrl); ScssContext.UrlMode urlMode = ScssContext.UrlMode.ABSOLUTE; String identifier = resourceUrl.getFile(); ScssStylesheet scssStylesheet = ScssStylesheet.get(identifier); if (scssStylesheet == null) { throw new Exception("ScssStylesheet is null for '" + identifier + "'"); } String content = scssStylesheet.toString(); String result = sourceMap.get(content); if (result == null) { scssStylesheet.compile(urlMode); Writer writer = new StringWriter(); scssStylesheet.write(writer, minify); result = writer.toString(); if (routeContext.getApplication().getPippoSettings().isProd()) { sourceMap.put(content, result); } } // send css routeContext.getResponse().contentType("text/css"); routeContext.getResponse().ok().send(result); } catch (Exception e) { throw new PippoRuntimeException(e); } }
@TaskAction void compile(IncrementalTaskInputs incrementalTaskInputs) throws Exception { File outputDir = getOutputDirectory(); outputDir.mkdirs(); Path srcDirPath = getSrcDir().toPath(); // only delete removed files if(incrementalTaskInputs.isIncremental()) { incrementalTaskInputs.outOfDate(inputFileDetails -> {}); incrementalTaskInputs.removed(inputFileDetails -> { File outputFile = getOutputFile(srcDirPath,outputDir,inputFileDetails.getFile()); if(outputFile.exists()) outputFile.delete(); }); } for(File f : getSassFiles()) { File outputFile = getOutputFile(srcDirPath,outputDir,f); outputFile.getParentFile().mkdirs(); try(OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(outputFile))) { ScssStylesheet sass = ScssStylesheet.get(f.getAbsolutePath()); sass.setFile(f); sass.setCharset("UTF-8"); // TODO: inteligent sass.addResolver(new FilesystemResolver(getSrcDir().getAbsolutePath())); sass.compile(); sass.write(out,getMinify()); } } }
@Override protected void sendResource(URL resourceUrl, RouteContext routeContext) throws IOException { try { // compile sass to css log.trace("Send css for '{}'", resourceUrl); ScssContext.UrlMode urlMode = ScssContext.UrlMode.ABSOLUTE; String identifier = resourceUrl.getFile(); ScssStylesheet scssStylesheet = ScssStylesheet.get(identifier); if (scssStylesheet == null) { throw new Exception("ScssStylesheet is null for '" + identifier + "'"); } String content = scssStylesheet.toString(); String result = sourceMap.get(content); if (result == null) { scssStylesheet.compile(urlMode); Writer writer = new StringWriter(); scssStylesheet.write(writer, minify); result = writer.toString(); if (routeContext.getApplication().getPippoSettings().isProd()) { sourceMap.put(content, result); } } // send css routeContext.getResponse().contentType("text/css"); routeContext.getResponse().ok().send(result); } catch (Exception e) { throw new PippoRuntimeException(e); } }