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 {} + ` + }); +});