Skip to content

Commit

Permalink
feat(compiler-sfc): add preprocessCustomRequire option
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Apr 24, 2020
1 parent d1e6932 commit 20d425f
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 17 deletions.
15 changes: 10 additions & 5 deletions packages/compiler-sfc/src/compileStyle.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// const postcss = require('postcss')
import postcss, { ProcessOptions, LazyResult, Result, ResultMap } from 'postcss'
import trimPlugin from './stylePluginTrim'
import scopedPlugin from './stylePluginScoped'
Expand All @@ -19,6 +18,7 @@ export interface SFCStyleCompileOptions {
trim?: boolean
preprocessLang?: PreprocessLang
preprocessOptions?: any
preprocessCustomRequire?: (id: string) => any
postcssOptions?: any
postcssPlugins?: any[]
}
Expand Down Expand Up @@ -137,8 +137,13 @@ function preprocess(
options: SFCStyleCompileOptions,
preprocessor: StylePreprocessor
): StylePreprocessorResults {
return preprocessor.render(options.source, options.map, {
filename: options.filename,
...options.preprocessOptions
})
return preprocessor.render(
options.source,
options.map,
{
filename: options.filename,
...options.preprocessOptions
},
options.preprocessCustomRequire
)
}
34 changes: 22 additions & 12 deletions packages/compiler-sfc/src/stylePreprocessors.ts
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -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,
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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]))
Expand Down

0 comments on commit 20d425f

Please sign in to comment.