From bab9ee32289e8ee8c74c0fe79c617a7ca007eea8 Mon Sep 17 00:00:00 2001 From: David Guilherme Date: Tue, 26 Feb 2019 22:42:31 +0000 Subject: [PATCH 1/2] Support post loaders for template blocks --- lib/loaders/pitcher.js | 9 ++++++++- test/template.spec.js | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/loaders/pitcher.js b/lib/loaders/pitcher.js index c0c28d720..5cb3f46e2 100644 --- a/lib/loaders/pitcher.js +++ b/lib/loaders/pitcher.js @@ -10,6 +10,8 @@ const isNullLoader = l => /(\/|\\|@)null-loader/.test(l.path) const isCSSLoader = l => /(\/|\\|@)css-loader/.test(l.path) const isCacheLoader = l => /(\/|\\|@)cache-loader/.test(l.path) const isPitcher = l => l.path !== __filename +const isPreLoader = l => !l.pitchExecuted +const isPostLoader = l => l.pitchExecuted const dedupeESLintLoader = loaders => { const res = [] @@ -136,10 +138,15 @@ module.exports.pitch = function (remainingRequest) { cacheIdentifier: hash(cacheIdentifier) + '-vue-loader-template' })}`] : [] + + const preLoaders = loaders.filter(isPreLoader) + const postLoaders = loaders.filter(isPostLoader) + const request = genRequest([ ...cacheLoader, + ...postLoaders, templateLoaderPath + `??vue-loader-options`, - ...loaders + ...preLoaders ]) // console.log(request) // the template compiler uses esm exports diff --git a/test/template.spec.js b/test/template.spec.js index 07889ed93..ece13b41c 100644 --- a/test/template.spec.js +++ b/test/template.spec.js @@ -305,3 +305,20 @@ test('disable prettify', done => { done() }) }) + +test('postLoaders support', done => { + mockBundleAndRun({ + entry: 'functional-root.vue', + module: { + rules: [ + { + resourceQuery: /^\?vue&type=template/, + enforce: 'post', + loader: path.resolve(__dirname, './mock-loaders/js') + } + ] + } + }, ({ module }) => { + done() + }) +}) From 7ef4da1333e8b29b8731711c90a428d7b8fd5d1c Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 28 Feb 2019 15:28:12 -0500 Subject: [PATCH 2/2] Update template.spec.js --- test/template.spec.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/template.spec.js b/test/template.spec.js index ece13b41c..e4e936c13 100644 --- a/test/template.spec.js +++ b/test/template.spec.js @@ -308,17 +308,19 @@ test('disable prettify', done => { test('postLoaders support', done => { mockBundleAndRun({ - entry: 'functional-root.vue', + entry: 'basic.vue', module: { rules: [ { resourceQuery: /^\?vue&type=template/, enforce: 'post', - loader: path.resolve(__dirname, './mock-loaders/js') + loader: path.resolve(__dirname, './mock-loaders/html') } ] } }, ({ module }) => { + // class="red" -> { staticClass: "red" } -> { staticClass: "green" } + expect(module.render.toString()).toMatch(`green`) done() }) })