From d0ab010bc6fefeb7710ac07949fff7f959a518a4 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 8 Jan 2018 15:52:40 -0500 Subject: [PATCH 1/3] refactor transformToRequire url handling --- .../modules/transform-require.js | 20 +++++++------------ .../modules/transform-srcset.js | 16 ++------------- lib/template-compiler/url-to-require.js | 13 ++++++++++++ 3 files changed, 22 insertions(+), 27 deletions(-) create mode 100644 lib/template-compiler/url-to-require.js 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}"` + } +} From 8254e40b6fc5fe87dc46b7421bdab720d168231c Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 8 Jan 2018 15:54:37 -0500 Subject: [PATCH 2/3] 13.7.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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": { From d37f1055fe3a58420b037f88990acbdd36901fa2 Mon Sep 17 00:00:00 2001 From: Peng Wang Date: Mon, 28 May 2018 17:09:05 -0500 Subject: [PATCH 3/3] fix(v13): prettier default parser removal --- lib/template-compiler/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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)