|
1 |
| -var compiler = require('vue-template-compiler') |
2 |
| -var transpile = require('vue-template-es2015-compiler') |
| 1 | +var normalize = require('./normalize') |
3 | 2 | var loaderUtils = require('loader-utils')
|
| 3 | +var compiler = require('vue-template-compiler') |
4 | 4 | var beautify = require('js-beautify').js_beautify
|
5 |
| -var normalize = require('./normalize') |
| 5 | +var transpile = require('vue-template-es2015-compiler') |
6 | 6 | var hotReloadAPIPath = normalize.dep('vue-hot-reload-api')
|
| 7 | +var transformRequire = require('./template-transform-require') |
7 | 8 |
|
8 |
| -// vue compiler module for using transforming `<tag>:<attribute>` to `require` |
9 |
| -var defaultTransformToRequire = { |
10 |
| - img: 'src', |
11 |
| - image: 'xlink:href' |
12 |
| -} |
13 |
| -var transformToRequire = defaultTransformToRequire |
14 |
| -var defaultCompileOptions = { |
15 |
| - modules: [{ |
16 |
| - postTransformNode (el) { |
17 |
| - for (var tag in transformToRequire) { |
18 |
| - if (el.tag === tag && el.attrs) { |
19 |
| - var attributes = transformToRequire[tag] |
20 |
| - if (typeof attributes === 'string') { |
21 |
| - el.attrs.some(attr => rewrite(attr, attributes)) |
22 |
| - } else if (Array.isArray(attributes)) { |
23 |
| - attributes.forEach(item => el.attrs.some(attr => rewrite(attr, item))) |
24 |
| - } |
25 |
| - } |
26 |
| - } |
27 |
| - } |
28 |
| - }] |
29 |
| -} |
30 |
| - |
31 |
| -function rewrite (attr, name) { |
32 |
| - if (attr.name === name) { |
33 |
| - var value = attr.value |
34 |
| - var isStatic = value.charAt(0) === '"' && value.charAt(value.length - 1) === '"' |
35 |
| - if (!isStatic) { |
36 |
| - return |
37 |
| - } |
38 |
| - var firstChar = value.charAt(1) |
39 |
| - if (firstChar === '.' || firstChar === '~') { |
40 |
| - if (firstChar === '~') { |
41 |
| - value = '"' + value.slice(2) |
42 |
| - } |
43 |
| - attr.value = `require(${value})` |
44 |
| - } |
45 |
| - return true |
46 |
| - } |
47 |
| -} |
| 9 | +var defaultCompileModules = [transformRequire] |
48 | 10 |
|
49 | 11 | module.exports = function (html) {
|
50 | 12 | this.cacheable()
|
51 | 13 | var isServer = this.target === 'node'
|
52 | 14 | var isProduction = this.minimize || process.env.NODE_ENV === 'production'
|
53 | 15 | var options = loaderUtils.getOptions(this) || {}
|
54 |
| - if (options.transformToRequire) { |
55 |
| - transformToRequire = Object.assign( |
56 |
| - {}, |
57 |
| - defaultTransformToRequire, |
58 |
| - options.transformToRequire |
59 |
| - ) |
60 |
| - } |
61 | 16 |
|
62 |
| - var compiled = compiler.compile(html, Object.assign({ |
63 |
| - preserveWhitespace: options.preserveWhitespace |
64 |
| - }, defaultCompileOptions)) |
| 17 | + // set user transformToRequire options on module |
| 18 | + transformRequire._userOptions = options.transformToRequire |
| 19 | + |
| 20 | + var compiled = compiler.compile(html, { |
| 21 | + preserveWhitespace: options.preserveWhitespace, |
| 22 | + modules: defaultCompileModules.concat(options.modules || []) |
| 23 | + }) |
65 | 24 |
|
66 | 25 | // tips
|
67 | 26 | if (compiled.tips && compiled.tips.length) {
|
|
0 commit comments