exports.compile = function compile(buffer, stream) { var m = less.render(buffer, function (e, css) { if (e) throw new Error(e); stream.write(css); }); };
const compile_and_resolve_deps = (input: {code: string, lang: string, file: string}) => { let code: string switch (input.lang) { case "coffeescript": try { code = coffee.compile(input.code, {bare: true, shiftLine: true}) } catch (error) { return reply({error: mkCoffeescriptError(error, input.file)}) } break; case "javascript": case "typescript": code = input.code break; case "less": const options = { paths: [path.dirname(input.file)], compress: true, ieCompat: false, } less.render(input.code, options, (error: any, output: any) => { if (error != null) reply({error: mkLessError(error, input.file)}) else reply({code: output.css}) }) return default: throw new Error(`unsupported input type: ${input.lang}`) } const result = ts.transpileModule(code, { fileName: input.file, reportDiagnostics: true, compilerOptions: { noEmitOnError: false, noImplicitAny: false, target: ts.ScriptTarget.ES5, module: ts.ModuleKind.CommonJS, }, }) if (result.diagnostics != null && result.diagnostics.length > 0) { const diagnostic = result.diagnostics[0] return reply({error: mkTypeScriptError(diagnostic)}) } const source = result.outputText try { const deps = detective(source) return reply({ code: source, deps: deps }) } catch(error) { return reply({error: error}) } }
function less(input: Buffer, options: LessOptions, callback: TransformCallback) { const input_string = input.toString('utf8'); less_module.render(input_string, options, (less_error, less_output) => { if (less_error) { const error = new Error(less_error.message) Object.assign(error, less_error) return callback(error); } const output = new Buffer(less_output.css, 'utf8'); callback(null, output); }); }
render(data) { let newLessStyles = data.less; for (let key in data.theme) { newLessStyles = newLessStyles.replace(new RegExp(variableRegexPrefix + key + variableRegexPostfix), () => { return '@' + key + ': ' + data.theme[key] + ';'; }); } Less.render(newLessStyles, (e, result) => { if (result !== undefined) { this.reply({ method: 'render', css: result.css }); } }); }
task("styles:build", async () => { for (const src of paths.less.sources) { const {css} = await less.render(read(src)!, {filename: src}) write(rename(src, {dir: paths.build_dir.css, ext: ".css"}), css) } })
// .less const less = { render( source: string, map: any | null, options: any ): StylePreprocessorResults { const nodeLess = require('less') let result: any let error: Error | null = null nodeLess.render( source, { syncImport: true }, (err: Error | null, output: any) => { error = err result = output } ) if (error) return { code: '', errors: [error] } if (map) { return { code: result.css.toString(), map: merge(map, result.map), errors: [] } } return { code: result.css.toString(), errors: [] }
// .less const less = { render( source: string, map: any | null, options: any ): StylePreprocessorResults { const nodeLess = require('less') let result: any let error: Error | null = null nodeLess.render( source, Object.assign({}, options, { syncImport: true }), (err: Error | null, output: any) => { error = err result = output } ) if (error) return { code: '', errors: [error] } if (map) { return { code: result.css.toString(), map: merge(map, result.map), errors: [] } } return { code: result.css.toString(), errors: [] }