Skip to content

Commit a8e2975

Browse files
committed
fix media query with scoped styles
1 parent 4d4aa18 commit a8e2975

File tree

4 files changed

+31
-2
lines changed

4 files changed

+31
-2
lines changed

lib/style-rewriter.js

+12-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,14 @@ var loaderUtils = require('loader-utils')
66
var currentId
77
var addId = postcss.plugin('add-id', function () {
88
return function (root) {
9-
root.each(function (node) {
9+
root.each(function rewriteSelector (node) {
10+
if (!node.selector) {
11+
// handle media queries
12+
if (node.type === 'atrule' && node.name === 'media') {
13+
node.each(rewriteSelector)
14+
}
15+
return
16+
}
1017
node.selector = selectorParser(function (selectors) {
1118
selectors.each(function (selector) {
1219
var node = null
@@ -46,5 +53,8 @@ module.exports = function (css) {
4653
.then(function (result) {
4754
cb(null, result)
4855
})
49-
.catch(cb)
56+
.catch(function (e) {
57+
console.log(e)
58+
cb(e)
59+
})
5060
}

test/fixtures/media-query.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
window.testModule = require('./media-query.vue')

test/fixtures/media-query.vue

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<style scoped>
2+
@media print {
3+
.foo {
4+
color: #000;
5+
}
6+
}
7+
</style>

test/test.js

+11
Original file line numberDiff line numberDiff line change
@@ -159,4 +159,15 @@ describe('vue-loader', function () {
159159
})
160160
})
161161

162+
it('media-query', function (done) {
163+
test({
164+
entry: './test/fixtures/media-query.js'
165+
}, function (window) {
166+
var style = window.document.querySelector('style').textContent
167+
var id = '_v-' + hash(require.resolve('./fixtures/media-query.vue'))
168+
expect(style).to.contain('@media print {\n .foo[' + id + '] {\n color: #000;\n }\n}')
169+
done()
170+
})
171+
})
172+
162173
})

0 commit comments

Comments
 (0)