feat(compiler-sfc): add preprocessCustomRequire option

This commit is contained in:
Evan You
2020-04-24 09:27:51 -04:00
parent d1e6932edc
commit 20d425fb19
2 changed files with 32 additions and 17 deletions

View File

@@ -1,7 +1,12 @@
import merge from 'merge-source-map'
export interface StylePreprocessor {
render(source: string, map?: object, options?: any): StylePreprocessorResults
render(
source: string,
map?: object,
options?: any,
customRequire?: (id: string) => any
): StylePreprocessorResults
}
export interface StylePreprocessorResults {
@@ -12,8 +17,8 @@ export interface StylePreprocessorResults {
// .scss/.sass processor
const scss: StylePreprocessor = {
render(source, map, options) {
const nodeSass = require('sass')
render(source, map, options, load = require) {
const nodeSass = load('sass')
const finalOptions = {
...options,
data: source,
@@ -41,18 +46,23 @@ const scss: StylePreprocessor = {
}
const sass: StylePreprocessor = {
render(source, map, options) {
return scss.render(source, map, {
...options,
indentedSyntax: true
})
render(source, map, options, load) {
return scss.render(
source,
map,
{
...options,
indentedSyntax: true
},
load
)
}
}
// .less
const less: StylePreprocessor = {
render(source, map, options) {
const nodeLess = require('less')
render(source, map, options, load = require) {
const nodeLess = load('less')
let result: any
let error: Error | null = null
@@ -81,8 +91,8 @@ const less: StylePreprocessor = {
// .styl
const styl: StylePreprocessor = {
render(source, map, options) {
const nodeStylus = require('stylus')
render(source, map, options, load = require) {
const nodeStylus = load('stylus')
try {
const ref = nodeStylus(source)
Object.keys(options).forEach(key => ref.set(key, options[key]))