From cb01d0884078ab76f23a718155d7d03321f24262 Mon Sep 17 00:00:00 2001 From: Cameron Little Date: Fri, 23 Jun 2017 13:10:46 -0700 Subject: [PATCH] Don't transform imported selectors --- src/index.js | 7 +++++++ test/test.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/src/index.js b/src/index.js index 33ef4dd..bc4cebd 100644 --- a/src/index.js +++ b/src/index.js @@ -163,6 +163,10 @@ const composeExports = messages => { module.exports = postcss.plugin(plugin, (options = {}) => (css, result) => { const { icssImports, icssExports } = extractICSS(css); + const importAliases = {}; + Object.keys(icssImports).forEach(filename => { + Object.assign(importAliases, icssImports[filename]); + }); const generateScopedName = options.generateScopedName || genericNames("[name]__[local]---[hash:base64:5]"); @@ -170,6 +174,9 @@ module.exports = postcss.plugin(plugin, (options = {}) => (css, result) => { const aliases = {}; walkRules(css, rule => { const getAlias = name => { + if (importAliases[name]) { + return name; + } if (aliases[name]) { return aliases[name]; } diff --git a/test/test.js b/test/test.js index dac2a3a..e3fda66 100644 --- a/test/test.js +++ b/test/test.js @@ -939,3 +939,47 @@ test("icss-value and icss-composed together", () => { ] }); }); + +test("does not replace imported values", () => { + return runCSS({ + fixture: ` + :import("~/lol.css") { + foo: __foo + } + .bar { + test: foo + } + `, + expected: ` + :import('~/lol.css') { + foo: __foo + } + :export { + bar: __scope__bar + } + .__scope__bar { + test: foo + } + ` + }); +}); + +test("does not replaces imported selectors", () => { + return runCSS({ + fixture: ` + :import("~/lol.css") { + foo: __foo + } + .test .foo {} + `, + expected: ` + :import('~/lol.css') { + foo: __foo + } + :export { + test: __scope__test + } + .__scope__test .foo {} + ` + }); +});