transformSrcset,
createSrcsetTransformWithOptions
} from './templateTransformSrcset'
-import { isObject } from '@vue/shared'
+import { generateCodeFrame, isObject } from '@vue/shared'
import * as CompilerDOM from '@vue/compiler-dom'
import * as CompilerSSR from '@vue/compiler-ssr'
import consolidate from 'consolidate'
transformAssetUrls
}: SFCTemplateCompileOptions): SFCTemplateCompileResults {
const errors: CompilerError[] = []
+ const warnings: CompilerError[] = []
let nodeTransforms: NodeTransform[] = []
if (isObject(transformAssetUrls)) {
nodeTransforms: nodeTransforms.concat(compilerOptions.nodeTransforms || []),
filename,
sourceMap: true,
- onError: e => errors.push(e)
+ onError: e => errors.push(e),
+ onWarn: w => warnings.push(w)
})
// inMap should be the map produced by ./parse.ts which is a simple line-only
}
}
- return { code, ast, preamble, source, errors, tips: [], map }
+ const tips = warnings.map(w => {
+ let msg = w.message
+ if (w.loc) {
+ msg += `\n${generateCodeFrame(
+ source,
+ w.loc.start.offset,
+ w.loc.end.offset
+ )}`
+ }
+ return msg
+ })
+
+ return { code, ast, preamble, source, errors, tips, map }
}
function mapLines(oldMap: RawSourceMap, newMap: RawSourceMap): RawSourceMap {