From 43d111b9a3f2d0ece553bb27b6054d01558c0971 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Fri, 27 Dec 2019 21:28:52 +0800 Subject: [PATCH] feat(cli): support >>> or /deep/ or ::v-deep in selectors (without scoped) #1095 --- .../packages/postcss/index.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/packages/vue-cli-plugin-uni/packages/postcss/index.js b/packages/vue-cli-plugin-uni/packages/postcss/index.js index 0b1300e03..65494c5a2 100644 --- a/packages/vue-cli-plugin-uni/packages/postcss/index.js +++ b/packages/vue-cli-plugin-uni/packages/postcss/index.js @@ -212,6 +212,27 @@ if (process.env.UNI_USING_V3) { } else { root.walkRules(rule => { const selectors = transformSelector(rule.selectors.join(','), function (selectors) { + selectors.each((selector) => { + // find the last child node to insert attribute selector + selector.each((n) => { + // ">>>" combinator + // and /deep/ alias for >>>, since >>> doesn't work in SASS + if (n.type === 'combinator' && + (n.value === '>>>' || n.value === + '/deep/')) { + n.value = ' ' + n.spaces.before = n.spaces.after = '' + return false + } + // in newer versions of sass, /deep/ support is also dropped, so add a ::v-deep alias + if (n.type === 'pseudo' && n.value === + '::v-deep') { + n.value = n.spaces.before = n.spaces.after = + '' + return false + } + }) + }) selectors.walkUniversals(node => { node.parent.remove() }) -- GitLab