Beispiel #1
0
	exports.compile = function compile(buffer, stream) {
		var m = less.render(buffer, function (e, css) {
			if (e)
				throw new Error(e);
			stream.write(css);
		});
	};
Beispiel #2
0
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})
  }
}
Beispiel #3
0
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);
  });
}
Beispiel #4
0
 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
             });
         }
     });
 }
Beispiel #5
0
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)
  }
})
Beispiel #6
0
// .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: [] }
Beispiel #7
0
// .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: [] }