From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- .../lib/styleProcessors/index.ts | 133 +++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 node_modules/@vue/component-compiler-utils/lib/styleProcessors/index.ts (limited to 'node_modules/@vue/component-compiler-utils/lib/styleProcessors/index.ts') diff --git a/node_modules/@vue/component-compiler-utils/lib/styleProcessors/index.ts b/node_modules/@vue/component-compiler-utils/lib/styleProcessors/index.ts new file mode 100644 index 00000000..b458c52e --- /dev/null +++ b/node_modules/@vue/component-compiler-utils/lib/styleProcessors/index.ts @@ -0,0 +1,133 @@ +const merge = require('merge-source-map') + +export interface StylePreprocessor { + render( + source: string, + map: any | null, + options: any + ): StylePreprocessorResults +} + +export interface StylePreprocessorResults { + code: string + map?: any + errors: Array +} + +// .scss/.sass processor +const scss: StylePreprocessor = { + render( + source: string, + map: any | null, + options: any + ): StylePreprocessorResults { + const nodeSass = require('node-sass') + const finalOptions = Object.assign({}, options, { + data: source, + file: options.filename, + outFile: options.filename, + sourceMap: !!map + }) + + try { + const result = nodeSass.renderSync(finalOptions) + + if (map) { + return { + code: result.css.toString(), + map: merge(map, JSON.parse(result.map.toString())), + errors: [] + } + } + + return { code: result.css.toString(), errors: [] } + } catch (e) { + return { code: '', errors: [e] } + } + } +} + +const sass = { + render( + source: string, + map: any | null, + options: any + ): StylePreprocessorResults { + return scss.render( + source, + map, + Object.assign({}, options, { indentedSyntax: true }) + ) + } +} + +// .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: [] } + } +} + +// .styl +const styl = { + render( + source: string, + map: any | null, + options: any + ): StylePreprocessorResults { + const nodeStylus = require('stylus') + try { + const ref = nodeStylus(source) + Object.keys(options).forEach(key => ref.set(key, options[key])) + if (map) ref.set('sourcemap', { inline: false, comment: false }) + + const result = ref.render() + if (map) { + return { + code: result, + map: merge(map, ref.sourcemap), + errors: [] + } + } + + return { code: result, errors: [] } + } catch (e) { + return { code: '', errors: [e] } + } + } +} + +export const processors: { [key: string]: StylePreprocessor } = { + less, + sass, + scss, + styl, + stylus: styl +} -- cgit v1.2.3