From c2eadd3dad3230ee901c3fd6224617903b33e7c8 Mon Sep 17 00:00:00 2001 From: Rahul Kadyan Date: Sat, 26 May 2018 01:06:14 +0530 Subject: [PATCH] fix: Resolve src values on style blocks with require.resolve --- src/compiler.ts | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index ecbc874..0749263 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -64,15 +64,18 @@ export class SFCCompiler { script: ScriptOptions style: StyleOptions template: TemplateOptions + resolve: RequireResolve constructor( script: ScriptOptions, style: StyleOptions, - template: TemplateOptions + template: TemplateOptions, + resolve: RequireResolve = require.resolve ) { this.template = template this.style = style this.script = script + this.resolve = resolve } compileToDescriptor( @@ -193,8 +196,20 @@ export class SFCCompiler { } private read(filename: string, context: string): string { - return fs - .readFileSync(path.resolve(path.dirname(context), filename)) - .toString() + try { + return fs + .readFileSync( + filename.startsWith('.') + ? path.resolve(path.dirname(context), filename) + : this.resolve(filename, { paths: [path.dirname(context)] }) + ) + .toString() + } catch (e) { + if (/cannot find module/i.test(e.message)) { + throw Error(`Cannot find '${filename}' in '${context}'`) + } + + throw e + } } }