Skip to content

Commit 8ac1ea2

Browse files
Nathan ReidGuillaume Chau
Nathan Reid
authored and
Guillaume Chau
committed
Allow plugins to fully control the CSS modules output (previously they were restricted to output that would be run through JSON.stringify) (#293)
1 parent 34355bd commit 8ac1ea2

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

packages/vue-component/plugin/tag-handler.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -380,17 +380,12 @@ VueComponentTagHandler = class VueComponentTagHandler {
380380
inputFile: this.inputFile,
381381
dependencyManager: this.dependencyManager,
382382
tag: styleTag,
383+
cssModules,
383384
})
384385
// console.log('Css result', result)
385386
css = result.css
386387
cssMap = result.map
387-
if (result.cssModules) {
388-
const moduleName = typeof styleTag.attribs.module === 'string' ? styleTag.attribs.module : defaultModuleName
389-
if (cssModules === undefined) {
390-
cssModules = {}
391-
}
392-
cssModules[moduleName] = { ...(cssModules[moduleName] || {}), ...result.cssModules }
393-
}
388+
cssModules = result.cssModules
394389
if (result.js) {
395390
js += result.js
396391
}
@@ -448,6 +443,13 @@ VueComponentTagHandler = class VueComponentTagHandler {
448443
}
449444
}
450445

446+
if (cssModules && !global.vue.cssModules) {
447+
cssModules = Object.keys(cssModules).reduce((result, key) => {
448+
result[key] = JSON.stringify(cssModules[key]);
449+
return result;
450+
}, {});
451+
}
452+
451453
let compileResult = {
452454
code: js,
453455
map,

packages/vue-component/plugin/vue-compiler.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -631,7 +631,7 @@ function generateJs (vueId, inputFile, compileResult, isHotReload = false) {
631631
if(compileResult.cssModules) {
632632
const modules = Object.keys(compileResult.cssModules)
633633
const modulesCode = '__vue_options__.computed = __vue_options__.computed || {};\n' +
634-
modules.map(module=>`__vue_options__.computed['${module}'] = function() {\n return ${JSON.stringify(compileResult.cssModules[module])}\n};\n`).join('\n')
634+
modules.map(module=>`__vue_options__.computed['${module}'] = function() {\n return ${compileResult.cssModules[module]}\n};\n`).join('\n')
635635
js += modulesCode
636636
// console.log(modulesCode)
637637
}

0 commit comments

Comments
 (0)