private Configuration lessConf(final Config conf) { Configuration configuration = new Configuration(); configuration.setCompressing(get("compressing")); SourceMapConfiguration sourceMap = configuration.getSourceMapConfiguration(); Map<String, Object> map = get("sourceMap"); if (map == null) { sourceMap.setLinkSourceMap(false); } else { sourceMap.setEncodingCharset( map.getOrDefault("encodingCharset", conf.getAnyRef("application.charset")).toString()); sourceMap.setIncludeSourcesContent((Boolean) map.getOrDefault("includeSourcesContent", true)); sourceMap.setInline((Boolean) map.getOrDefault("inline", true)); sourceMap.setRelativizePaths((Boolean) map.getOrDefault("relativizePaths", true)); sourceMap.setLinkSourceMap((Boolean) map.getOrDefault("linkSourceMap", true)); } return configuration; }
@Override protected void sendResource(URL resourceUrl, RouteContext routeContext) throws IOException { try { // compile less to css log.trace("Send css for '{}'", resourceUrl); LessSource.URLSource source = new LessSource.URLSource(resourceUrl); String content = source.getContent(); String result = sourceMap.get(content); if (result == null) { ThreadUnsafeLessCompiler compiler = new ThreadUnsafeLessCompiler(); LessCompiler.Configuration configuration = new LessCompiler.Configuration(); configuration.setCompressing(minify); LessCompiler.CompilationResult compilationResult = compiler.compile(resourceUrl, configuration); for (LessCompiler.Problem warning : compilationResult.getWarnings()) { log.warn("Line: {}, Character: {}, Message: {} ", warning.getLine(), warning.getCharacter(), warning.getMessage()); } result = compilationResult.getCss(); 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); } }
private Configuration options(final boolean dev, final Config conf) { Configuration configuration = new Configuration(); boolean compressing = conf.hasPath("compressing") ? conf.getBoolean("compressing") : !dev; configuration.setCompressing(compressing); SourceMapConfiguration sourceMap = configuration.getSourceMapConfiguration(); sourceMap.setEncodingCharset(conf.getString("sourceMap.encodingCharset")); sourceMap.setIncludeSourcesContent(conf.getBoolean("sourceMap.includeSourcesContent")); sourceMap.setInline(conf.getBoolean("sourceMap.inline")); sourceMap.setRelativizePaths(conf.getBoolean("sourceMap.relativizePaths")); boolean linkSourceMap = conf.hasPath("sourceMap.linkSourceMap") ? conf.getBoolean("sourceMap.linkSourceMap") : dev; sourceMap.setLinkSourceMap(linkSourceMap); return configuration; }
@Override protected void sendResource(URL resourceUrl, RouteContext routeContext) throws IOException { try { // compile less to css log.trace("Send css for '{}'", resourceUrl); LessSource.URLSource source = new LessSource.URLSource(resourceUrl); String content = source.getContent(); String result = sourceMap.get(content); if (result == null) { ThreadUnsafeLessCompiler compiler = new ThreadUnsafeLessCompiler(); LessCompiler.Configuration configuration = new LessCompiler.Configuration(); configuration.setCompressing(minify); LessCompiler.CompilationResult compilationResult = compiler.compile(resourceUrl, configuration); for (LessCompiler.Problem warning : compilationResult.getWarnings()) { log.warn("Line: {}, Character: {}, Message: {} ", warning.getLine(), warning.getCharacter(), warning.getMessage()); } result = compilationResult.getCss(); 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); } }
/** * Compile the LESS code and get the included files from the skin templates. * @param lessCode code to compile * @param skin skin holding the templates * @param inlineSourceMap whether to create inline sourcemaps in the generated css * @return the results of the LESS compilation * @throws Less4jException if problems occur */ public String compile(String lessCode, String skin, boolean inlineSourceMap) throws Less4jException { LessCompiler lessCompiler = new DefaultLessCompiler(); LessCompiler.Configuration options = new LessCompiler.Configuration(); options.setCompressing(true); options.getSourceMapConfiguration().setInline(inlineSourceMap); options.getSourceMapConfiguration().setIncludeSourcesContent(true); LessSource lessSource = new CustomContentLESSSource(lessCode, templateManager, skinManager.getSkin(skin)); LessCompiler.CompilationResult lessResult = lessCompiler.compile(lessSource, options); return lessResult.getCss(); } }
protected void initBootstrap() { LessCompilerConfigurationFactory lessConfigFactory = () -> { Configuration lessConfig = new Configuration(); lessConfig.setCompressing( RuntimeConfigurationType.DEPLOYMENT.equals(getConfigurationType())); return lessConfig; }; WicketWebjars.install(this); BootstrapLess.install(this, lessConfigFactory); Bootstrap.install(this); IBootstrapSettings settings = Bootstrap.getSettings(this); settings.setCssResourceReference(CustomBootstrapLessReference.get()); }
private LessCompiler.Configuration createConfiguration(File cssOutut) { LessCompiler.Configuration configuration = new LessCompiler.Configuration(); configuration.setCssResultLocation(new LessSource.FileSource(cssOutut)); configuration.setCompressing(compress); return configuration; }
protected void initBootstrap() { LessCompilerConfigurationFactory lessConfigFactory = () -> { Configuration lessConfig = new Configuration(); lessConfig.setCompressing( RuntimeConfigurationType.DEPLOYMENT.equals(getConfigurationType())); return lessConfig; }; WicketWebjars.install(this); BootstrapLess.install(this, lessConfigFactory); Bootstrap.install(this); IBootstrapSettings settings = Bootstrap.getSettings(this); settings.setCssResourceReference(CustomBootstrapLessReference.get()); }
private CompilationResult compile(File lessFile, File cssFile, boolean generateSourceMap, boolean isCompressing, boolean ieCompatibility) throws Less4jException { Configuration configuration = new Configuration(); configuration.setCssResultLocation(cssFile); configuration.setCompressing(isCompressing); configuration.setIeCompatibility(ieCompatibility); configuration.getSourceMapConfiguration().setLinkSourceMap(generateSourceMap && cssFile != null); DefaultLessCompiler compiler = new DefaultLessCompiler(); return compiler.compile(lessFile, configuration); }