mirror of https://github.com/vuejs/core.git
fix(compiler-sfc): use sass modern api if available and avoid deprecation warning (#11992)
This commit is contained in:
parent
9da1ac1565
commit
4474c113d1
|
|
@ -23,28 +23,48 @@ export interface StylePreprocessorResults {
|
||||||
|
|
||||||
// .scss/.sass processor
|
// .scss/.sass processor
|
||||||
const scss: StylePreprocessor = (source, map, options, load = require) => {
|
const scss: StylePreprocessor = (source, map, options, load = require) => {
|
||||||
const nodeSass = load('sass')
|
const nodeSass: typeof import('sass') = load('sass')
|
||||||
const finalOptions = {
|
const { compileString, renderSync } = nodeSass
|
||||||
...options,
|
|
||||||
data: getSource(source, options.filename, options.additionalData),
|
const data = getSource(source, options.filename, options.additionalData)
|
||||||
file: options.filename,
|
let css: string
|
||||||
outFile: options.filename,
|
let dependencies: string[]
|
||||||
sourceMap: !!map,
|
let sourceMap: any
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const result = nodeSass.renderSync(finalOptions)
|
if (compileString) {
|
||||||
const dependencies = result.stats.includedFiles
|
const { pathToFileURL, fileURLToPath }: typeof import('url') = load('url')
|
||||||
if (map) {
|
|
||||||
return {
|
const result = compileString(data, {
|
||||||
code: result.css.toString(),
|
...options,
|
||||||
map: merge(map, JSON.parse(result.map.toString())),
|
url: pathToFileURL(options.filename),
|
||||||
errors: [],
|
sourceMap: !!map,
|
||||||
dependencies,
|
})
|
||||||
}
|
css = result.css
|
||||||
|
dependencies = result.loadedUrls.map(url => fileURLToPath(url))
|
||||||
|
sourceMap = map ? result.sourceMap! : undefined
|
||||||
|
} else {
|
||||||
|
const result = renderSync({
|
||||||
|
...options,
|
||||||
|
data,
|
||||||
|
file: options.filename,
|
||||||
|
outFile: options.filename,
|
||||||
|
sourceMap: !!map,
|
||||||
|
})
|
||||||
|
css = result.css.toString()
|
||||||
|
dependencies = result.stats.includedFiles
|
||||||
|
sourceMap = map ? JSON.parse(result.map!.toString()) : undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
return { code: result.css.toString(), errors: [], dependencies }
|
if (map) {
|
||||||
|
return {
|
||||||
|
code: css,
|
||||||
|
errors: [],
|
||||||
|
dependencies,
|
||||||
|
map: merge(map, sourceMap!),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return { code: css, errors: [], dependencies }
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
return { code: '', errors: [e], dependencies: [] }
|
return { code: '', errors: [e], dependencies: [] }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue