refactor(compiler-sfc): simplify style preprocessors

This commit is contained in:
Evan You 2020-07-16 13:38:46 -04:00
parent 9cb29eea3a
commit d5055cd8dd
2 changed files with 92 additions and 103 deletions

View File

@ -213,7 +213,7 @@ function preprocess(
) )
} }
return preprocessor.render( return preprocessor(
options.source, options.source,
options.map, options.map,
{ {

View File

@ -3,8 +3,7 @@ import path from 'path'
import { RawSourceMap } from 'source-map' import { RawSourceMap } from 'source-map'
import { SFCStyleCompileOptions } from './compileStyle' import { SFCStyleCompileOptions } from './compileStyle'
export interface StylePreprocessor { export type StylePreprocessor = (
render(
source: string, source: string,
map: RawSourceMap | undefined, map: RawSourceMap | undefined,
options: { options: {
@ -12,8 +11,7 @@ export interface StylePreprocessor {
filename: string filename: string
}, },
customRequire: SFCStyleCompileOptions['preprocessCustomRequire'] customRequire: SFCStyleCompileOptions['preprocessCustomRequire']
): StylePreprocessorResults ) => StylePreprocessorResults
}
export interface StylePreprocessorResults { export interface StylePreprocessorResults {
code: string code: string
@ -23,8 +21,7 @@ export interface StylePreprocessorResults {
} }
// .scss/.sass processor // .scss/.sass processor
const scss: StylePreprocessor = { const scss: StylePreprocessor = (source, map, options, load = require) => {
render(source, map, options, load = require) {
const nodeSass = load('sass') const nodeSass = load('sass')
const finalOptions = { const finalOptions = {
...options, ...options,
@ -52,11 +49,9 @@ const scss: StylePreprocessor = {
return { code: '', errors: [e], dependencies: [] } return { code: '', errors: [e], dependencies: [] }
} }
} }
}
const sass: StylePreprocessor = { const sass: StylePreprocessor = (source, map, options, load) =>
render(source, map, options, load) { scss(
return scss.render(
source, source,
map, map,
{ {
@ -65,12 +60,9 @@ const sass: StylePreprocessor = {
}, },
load load
) )
}
}
// .less // .less
const less: StylePreprocessor = { const less: StylePreprocessor = (source, map, options, load = require) => {
render(source, map, options, load = require) {
const nodeLess = load('less') const nodeLess = load('less')
let result: any let result: any
@ -105,11 +97,9 @@ const less: StylePreprocessor = {
dependencies: dependencies dependencies: dependencies
} }
} }
}
// .styl // .styl
const styl: StylePreprocessor = { const styl: StylePreprocessor = (source, map, options, load = require) => {
render(source, map, options, load = require) {
const nodeStylus = load('stylus') const nodeStylus = load('stylus')
try { try {
const ref = nodeStylus(source) const ref = nodeStylus(source)
@ -136,7 +126,6 @@ const styl: StylePreprocessor = {
return { code: '', errors: [e], dependencies: [] } return { code: '', errors: [e], dependencies: [] }
} }
} }
}
export type PreprocessLang = 'less' | 'sass' | 'scss' | 'styl' | 'stylus' export type PreprocessLang = 'less' | 'sass' | 'scss' | 'styl' | 'stylus'