diff --git a/lib/template-compiler/index.js b/lib/template-compiler/index.js index 95d8ff00b..8fbb13880 100644 --- a/lib/template-compiler/index.js +++ b/lib/template-compiler/index.js @@ -77,7 +77,7 @@ module.exports = function (html) { // prettify render fn if (!isProduction) { - code = prettier.format(code, { semi: false }) + code = prettier.format(code, { semi: false, parser: 'babylon' }) } // mark with stripped (this enables Vue to use correct runtime proxy detection) diff --git a/lib/template-compiler/modules/transform-require.js b/lib/template-compiler/modules/transform-require.js index 33a4c04d5..1e523be50 100644 --- a/lib/template-compiler/modules/transform-require.js +++ b/lib/template-compiler/modules/transform-require.js @@ -1,5 +1,7 @@ // vue compiler module for transforming `:` to `require` +const urlToRequire = require('../url-to-require') + const defaultOptions = { video: ['src', 'poster'], source: 'src', @@ -34,19 +36,11 @@ function transform (node, options) { function rewrite (attr, name) { if (attr.name === name) { - let value = attr.value - const isStatic = value.charAt(0) === '"' && value.charAt(value.length - 1) === '"' - if (!isStatic) { - return - } - const firstChar = value.charAt(1) - if (firstChar === '.' || firstChar === '~') { - if (firstChar === '~') { - const secondChar = value.charAt(2) - value = '"' + value.slice(secondChar === '/' ? 3 : 2) - } - attr.value = `require(${value})` + const value = attr.value + // only transform static URLs + if (value.charAt(0) === '"' && value.charAt(value.length - 1) === '"') { + attr.value = urlToRequire(value.slice(1, -1)) + return true } - return true } } diff --git a/lib/template-compiler/modules/transform-srcset.js b/lib/template-compiler/modules/transform-srcset.js index 2779eeae6..f5ff40ead 100644 --- a/lib/template-compiler/modules/transform-srcset.js +++ b/lib/template-compiler/modules/transform-srcset.js @@ -1,5 +1,7 @@ // vue compiler module for transforming `img:srcset` to a number of `require`s +const urlToRequire = require('../url-to-require') + module.exports = () => ({ postTransformNode: node => { transform(node) @@ -43,17 +45,3 @@ function transform (node) { }) } } - -function urlToRequire (url) { - // same logic as in transform-require.js - const firstChar = url.charAt(0) - if (firstChar === '.' || firstChar === '~') { - if (firstChar === '~') { - const secondChar = url.charAt(1) - url = url.slice(secondChar === '/' ? 2 : 1) - } - return `require("${url}")` - } else { - return `"${url}"` - } -} diff --git a/lib/template-compiler/url-to-require.js b/lib/template-compiler/url-to-require.js new file mode 100644 index 000000000..fcd13d55e --- /dev/null +++ b/lib/template-compiler/url-to-require.js @@ -0,0 +1,13 @@ +module.exports = function urlToRequire (url) { + // same logic as in transform-require.js + const firstChar = url.charAt(0) + if (firstChar === '.' || firstChar === '~' || firstChar === '@') { + if (firstChar === '~') { + const secondChar = url.charAt(1) + url = url.slice(secondChar === '/' ? 2 : 1) + } + return `require("${url}")` + } else { + return `"${url}"` + } +} diff --git a/package-lock.json b/package-lock.json index 6263ec648..5f2bd41d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "vue-loader", - "version": "13.6.2", + "version": "13.7.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 631578869..6e57bd705 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue-loader", - "version": "13.6.2", + "version": "13.7.0", "description": "Vue single-file component loader for Webpack", "main": "index.js", "repository": {